Warning, /network/neochat/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 # SPDX-FileCopyrightText: 2020-2021 Carl Schwan <carl@carlschwan.eu> 0002 # SPDX-FileCopyrightText: 2020-2021 Nicolas Fella <nicolas.fella@gmx.de> 0003 # SPDX-FileCopyrightText: 2020-2021 Tobias Fella <tobias.fella@kde.org> 0004 # SPDX-FileCopyrightText: 2021 Adriaan de Groot <groot@kde.org> 0005 # SPDX-License-Identifier: BSD-2-Clause 0006 0007 cmake_minimum_required(VERSION 3.16) 0008 0009 # KDE Applications version, managed by release script. 0010 set(RELEASE_SERVICE_VERSION_MAJOR "23") 0011 set(RELEASE_SERVICE_VERSION_MINOR "07") 0012 set(RELEASE_SERVICE_VERSION_MICRO "70") 0013 set(RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}") 0014 0015 project(NeoChat VERSION ${RELEASE_SERVICE_VERSION}) 0016 0017 set(KF_MIN_VERSION "5.91.0") 0018 set(QT_MIN_VERSION "5.15.2") 0019 if (ANDROID) 0020 set(QT_MIN_VERSION "5.15.8") 0021 endif() 0022 0023 find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE) 0024 0025 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) 0026 0027 set(CMAKE_CXX_STANDARD 20) 0028 set(CMAKE_CXX_STANDARD_REQUIRED ON) 0029 0030 set(KDE_COMPILERSETTINGS_LEVEL 5.84) 0031 0032 include(FeatureSummary) 0033 include(ECMSetupVersion) 0034 include(KDEInstallDirs) 0035 include(ECMFindQmlModule) 0036 include(KDECMakeSettings) 0037 include(ECMAddTests) 0038 include(KDECompilerSettings NO_POLICY_SCOPE) 0039 include(ECMAddAppIcon) 0040 include(KDEGitCommitHooks) 0041 include(ECMCheckOutboundLicense) 0042 if (NOT ANDROID) 0043 include(KDEClangFormat) 0044 endif() 0045 0046 if(NEOCHAT_FLATPAK) 0047 include(cmake/Flatpak.cmake) 0048 endif() 0049 0050 ecm_setup_version(${PROJECT_VERSION} 0051 VARIABLE_PREFIX NEOCHAT 0052 VERSION_HEADER ${CMAKE_CURRENT_BINARY_DIR}/neochat-version.h 0053 ) 0054 0055 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} NO_MODULE COMPONENTS Core Quick Gui QuickControls2 Multimedia Svg) 0056 set_package_properties(Qt${QT_MAJOR_VERSION} PROPERTIES 0057 TYPE REQUIRED 0058 PURPOSE "Basic application components" 0059 ) 0060 find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} COMPONENTS Kirigami2 I18n Notifications Config CoreAddons Sonnet ItemModels) 0061 set_package_properties(KF${QT_MAJOR_VERSION} PROPERTIES 0062 TYPE REQUIRED 0063 PURPOSE "Basic application components" 0064 ) 0065 set_package_properties(KF${QT_MAJOR_VERSION}Kirigami2 PROPERTIES 0066 TYPE REQUIRED 0067 PURPOSE "Kirigami application UI framework" 0068 ) 0069 find_package(KF${QT_MAJOR_VERSION}KirigamiAddons 0.7.2 REQUIRED) 0070 0071 find_package(Qt${QT_MAJOR_VERSION}Keychain) 0072 set_package_properties(Qt${QT_MAJOR_VERSION}Keychain PROPERTIES 0073 TYPE REQUIRED 0074 PURPOSE "Secure storage of account secrets" 0075 ) 0076 0077 if(ANDROID) 0078 find_package(OpenSSL) 0079 set_package_properties(OpenSSL PROPERTIES 0080 TYPE REQUIRED 0081 PURPOSE "Encrypted communications" 0082 ) 0083 else() 0084 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} COMPONENTS Widgets) 0085 find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS QQC2DesktopStyle ConfigWidgets KIO WindowSystem) 0086 set_package_properties(KF${QT_MAJOR_VERSION}QQC2DesktopStyle PROPERTIES 0087 TYPE RUNTIME 0088 ) 0089 ecm_find_qmlmodule(org.kde.syntaxhighlighting 1.0) 0090 endif() 0091 0092 if (NOT ANDROID AND NOT WIN32 AND NOT APPLE) 0093 find_package(KF${QT_MAJOR_VERSION}DBusAddons ${KF_MIN_VERSION} REQUIRED) 0094 endif() 0095 0096 find_package(Quotient 0.6) 0097 set_package_properties(Quotient PROPERTIES 0098 TYPE REQUIRED 0099 DESCRIPTION "Qt wrapper around Matrix API" 0100 URL "https://github.com/quotient-im/libQuotient/" 0101 PURPOSE "Talk with matrix server" 0102 ) 0103 0104 find_package(cmark) 0105 set_package_properties(cmark PROPERTIES 0106 TYPE REQUIRED 0107 DESCRIPTION "Cmark is the common mark reference implementation" 0108 URL "https://github.com/commonmark/cmark" 0109 PURPOSE "Convert markdown to html" 0110 ) 0111 0112 ecm_find_qmlmodule(org.kde.kquickimageeditor 1.0) 0113 ecm_find_qmlmodule(org.kde.kitemmodels 1.0) 0114 ecm_find_qmlmodule(org.kde.quickcharts 1.0) 0115 0116 find_package(KQuickImageEditor COMPONENTS) 0117 set_package_properties(KQuickImageEditor PROPERTIES 0118 TYPE REQUIRED 0119 DESCRIPTION "Simple image editor for QtQuick applications" 0120 URL "https://invent.kde.org/libraries/kquickimageeditor/" 0121 PURPOSE "Add image editing capability to image attachments" 0122 ) 0123 0124 find_package(QCoro${QT_MAJOR_VERSION} 0.4 COMPONENTS Core REQUIRED) 0125 0126 qcoro_enable_coroutines() 0127 0128 find_package(KF${QT_MAJOR_VERSION}DocTools ${KF_MIN_VERSION}) 0129 set_package_properties(KF${QT_MAJOR_VERSION}DocTools PROPERTIES DESCRIPTION 0130 "Tools to generate documentation" 0131 TYPE OPTIONAL 0132 ) 0133 0134 if(NOT Quotient_VERSION_MINOR GREATER 6) 0135 cmake_policy(SET CMP0063 OLD) 0136 endif() 0137 0138 if(ANDROID) 0139 find_package(Sqlite3) 0140 configure_file(${CMAKE_CURRENT_SOURCE_DIR}/android/version.gradle.in ${CMAKE_BINARY_DIR}/version.gradle) 0141 endif() 0142 0143 ki18n_install(po) 0144 0145 install(FILES org.kde.neochat.desktop DESTINATION ${KDE_INSTALL_APPDIR}) 0146 install(FILES org.kde.neochat.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) 0147 install(FILES org.kde.neochat.svg DESTINATION ${KDE_INSTALL_FULL_ICONDIR}/hicolor/scalable/apps) 0148 install(FILES org.kde.neochat.tray.svg DESTINATION ${KDE_INSTALL_FULL_ICONDIR}/hicolor/scalable/apps) 0149 0150 add_definitions(-DQT_NO_FOREACH) 0151 0152 add_subdirectory(src) 0153 if (BUILD_TESTING AND Quotient_VERSION_MINOR GREATER 6) 0154 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} NO_MODULE COMPONENTS Test) 0155 add_subdirectory(autotests) 0156 endif() 0157 0158 if(KF${QT_MAJOR_VERSION}DocTools_FOUND) 0159 kdoctools_install(po) 0160 add_subdirectory(doc) 0161 endif() 0162 0163 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) 0164 0165 if (NOT ANDROID) 0166 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES src/*.cpp src/*.h) 0167 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) 0168 0169 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) 0170 endif() 0171 file(GLOB_RECURSE ALL_SOURCE_FILES *.cpp *.h *.qml) 0172 # CI installs dependency headers to _install and _build, which break the reuse check 0173 # Fixes the test by excluding this directory 0174 list(FILTER ALL_SOURCE_FILES EXCLUDE REGEX [[_(install|build)/.*]]) 0175 ecm_check_outbound_license(LICENSES GPL-3.0-only FILES ${ALL_SOURCE_FILES})