Warning, /network/krdc/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16)
0002
0003 set (RELEASE_SERVICE_VERSION_MAJOR "24")
0004 set (RELEASE_SERVICE_VERSION_MINOR "04")
0005 set (RELEASE_SERVICE_VERSION_MICRO "70")
0006
0007 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0008
0009 project(krdc VERSION ${RELEASE_SERVICE_VERSION})
0010
0011 set (QT_MIN_VERSION "5.15.2")
0012 set (KF_MIN_VERSION "5.91.0")
0013
0014 find_package(ECM ${KF_MIN_VERSION} REQUIRED NO_MODULE)
0015 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH})
0016
0017 include(KDEInstallDirs)
0018 include(KDECMakeSettings)
0019 include(KDECompilerSettings NO_POLICY_SCOPE)
0020 include(ECMSetupVersion)
0021 include(ECMQtDeclareLoggingCategory)
0022 include(FeatureSummary)
0023 include(ECMDeprecationSettings)
0024 include(KDEClangFormat)
0025 include(KDEGitCommitHooks)
0026
0027 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core)
0028
0029 find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS
0030 Config
0031 KCMUtils
0032 DNSSD
0033 NotifyConfig
0034 Notifications
0035 Bookmarks
0036 IconThemes
0037 XmlGui
0038 Completion
0039 Wallet
0040 WidgetsAddons
0041 WindowSystem
0042 NotifyConfig
0043 I18n
0044 KIO
0045 )
0046
0047 if (QT_MAJOR_VERSION STREQUAL "6")
0048 find_package(KF6StatusNotifierItem ${KF_MIN_VERSION} REQUIRED)
0049
0050 find_package(PlasmaActivities)
0051 set_package_properties(PlasmaActivities PROPERTIES DESCRIPTION "KActivities libraries"
0052 URL "https://www.kde.org"
0053 TYPE OPTIONAL
0054 PURPOSE "For tracking which remote desktops are frequently accessed"
0055 )
0056 if (PlasmaActivities_FOUND)
0057 set(HAVE_KACTIVITIES TRUE)
0058 endif()
0059 else()
0060 find_package(KF5 ${KF_MIN_VERSION} OPTIONAL_COMPONENTS Activities)
0061 set_package_properties(KF5Activities PROPERTIES DESCRIPTION "KActivities libraries"
0062 URL "https://www.kde.org"
0063 TYPE OPTIONAL
0064 PURPOSE "For tracking which remote desktops are frequently accessed"
0065 )
0066 if (KF5Activities_FOUND)
0067 set(HAVE_KACTIVITIES TRUE)
0068 endif()
0069 endif()
0070
0071 find_package(KF${QT_MAJOR_VERSION}DocTools)
0072
0073 find_package(Threads REQUIRED)
0074
0075 # use sane compile flags
0076 add_definitions(
0077 -DQT_USE_QSTRINGBUILDER
0078 -DQT_NO_CAST_TO_ASCII
0079 -DQT_NO_CAST_FROM_ASCII
0080 -DQT_STRICT_ITERATORS
0081 -DQT_NO_URL_CAST_FROM_STRING
0082 -DQT_NO_CAST_FROM_BYTEARRAY
0083 -DQT_NO_KEYWORDS
0084 -DQT_NO_FOREACH
0085 )
0086 ecm_setup_version(${RELEASE_SERVICE_VERSION}
0087 VARIABLE_PREFIX KRDC
0088 SOVERSION 5
0089 VERSION_HEADER krdc_version.h
0090 )
0091
0092 if(WIN32)
0093 set(CMAKE_REQUIRED_LIBRARIES ${KDEWIN32_LIBRARIES})
0094 set(CMAKE_REQUIRED_INCLUDES ${KDEWIN32_INCLUDES})
0095 endif(WIN32)
0096
0097 option(WITH_VNC "Enable VNC support." ON)
0098 add_feature_info(VNC WITH_VNC "Building with support for the VNC protocol. Disable with -DWITH_VNC=NO")
0099 option(WITH_RDP "Enable RDP support. Has additional runtime binary requirements!" ON)
0100 add_feature_info(RDP WITH_RDP "Building with support for the RDP protocol. Disable with -DWITH_RDP=NO")
0101
0102 ecm_set_disabled_deprecation_versions(QT 5.15.2
0103 KF 5.102.0
0104 )
0105
0106
0107 set(CMAKE_CXX_STANDARD 20)
0108
0109 add_subdirectory(core)
0110
0111 if(WITH_VNC)
0112 find_package(LibVNCServer)
0113 set_package_properties(LibVNCServer PROPERTIES
0114 DESCRIPTION "VNC server / client library"
0115 URL "http://libvncserver.sourceforge.net/"
0116 PURPOSE "Needed to build VNC client support in KRDC"
0117 TYPE REQUIRED
0118 )
0119
0120 find_package(LibSSH)
0121 set_package_properties(LibSSH PROPERTIES
0122 DESCRIPTION "ssh library"
0123 URL "https://libssh.org/"
0124 PURPOSE "Needed to build VNC+SSH tunnel support "
0125 TYPE OPTIONAL
0126 )
0127 add_subdirectory(vnc)
0128 endif()
0129
0130 if(WITH_RDP)
0131 find_package(FreeRDP 2.10)
0132 set_package_properties(FreeRDP PROPERTIES
0133 DESCRIPTION "A free Remote Desktop Protocol (RDP) Implementation"
0134 URL "https://www.freerdp.com/"
0135 PURPOSE "FreeRDP provides RDP support"
0136 TYPE REQUIRED
0137 )
0138 find_package(WinPR)
0139 set_package_properties(WinPR PROPERTIES
0140 DESCRIPTION "Windows Portable Runtime"
0141 URL "https://www.freerdp.com/"
0142 PURPOSE "Runtime used by FreeRDP"
0143 TYPE REQUIRED
0144 )
0145 find_package(FreeRDP-Client 2.10)
0146 set_package_properties(FreeRDP-Client PROPERTIES
0147 DESCRIPTION "A free Remote Desktop Protocol (RDP) Implementation, Client libraries"
0148 URL "https://www.freerdp.com/"
0149 PURPOSE "FreeRDP provides RDP support"
0150 TYPE REQUIRED
0151 )
0152 add_subdirectory(rdp)
0153 endif()
0154
0155 add_subdirectory(test)
0156
0157 if(KF${QT_MAJOR_VERSION}DocTools_FOUND)
0158 add_subdirectory(doc)
0159 else()
0160 message("KF${QT_MAJOR_VERSION}DocTools not found. Not building documentation.")
0161 endif()
0162
0163
0164 add_executable(krdc)
0165
0166 target_compile_definitions(krdc PRIVATE -DBUILD_ZEROCONF)
0167
0168 configure_file(config-kactivities.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kactivities.h)
0169
0170 target_sources(krdc PRIVATE
0171 config/hostpreferenceslist.cpp
0172 config/preferencesdialog.cpp
0173 floatingtoolbar.cpp
0174 bookmarkmanager.cpp
0175 connectiondelegate.cpp
0176 remotedesktopsmodel.cpp
0177 systemtrayicon.cpp
0178 tabbedviewwidget.cpp
0179 factorwidget.cpp
0180 mainwindow.cpp
0181 main.cpp
0182
0183 krdc.qrc
0184 )
0185
0186 ki18n_wrap_ui(krdc
0187 config/general.ui
0188 )
0189
0190 ecm_qt_declare_logging_category(krdc
0191 HEADER krdc_debug.h
0192 IDENTIFIER KRDC
0193 CATEGORY_NAME KRDC
0194 DESCRIPTION "KRDC"
0195 EXPORT KRDC
0196 DEFAULT_SEVERITY Warning
0197 )
0198
0199 target_link_libraries(krdc
0200 KF${QT_MAJOR_VERSION}::ConfigCore
0201 KF${QT_MAJOR_VERSION}::KCMUtils
0202 KF${QT_MAJOR_VERSION}::DNSSD
0203 KF${QT_MAJOR_VERSION}::NotifyConfig
0204 KF${QT_MAJOR_VERSION}::Bookmarks
0205 KF${QT_MAJOR_VERSION}::IconThemes
0206 KF${QT_MAJOR_VERSION}::XmlGui
0207 KF${QT_MAJOR_VERSION}::Completion
0208 KF${QT_MAJOR_VERSION}::WidgetsAddons
0209 KF${QT_MAJOR_VERSION}::NotifyConfig
0210 KF${QT_MAJOR_VERSION}::Notifications
0211 krdccore
0212 )
0213
0214 if (QT_MAJOR_VERSION STREQUAL "6")
0215 target_link_libraries(krdc KF6::StatusNotifierItem KF6::BookmarksWidgets)
0216 endif()
0217
0218 if (HAVE_KACTIVITIES)
0219
0220 if (QT_MAJOR_VERSION STREQUAL "6")
0221 target_link_libraries(krdc Plasma::Activities)
0222 else()
0223 target_link_libraries(krdc KF5::Activities)
0224 endif()
0225 endif()
0226
0227 install(TARGETS krdc ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0228 install(PROGRAMS org.kde.krdc.desktop DESTINATION ${KDE_INSTALL_APPDIR})
0229 install(FILES org.kde.krdc.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
0230
0231 ki18n_install(po)
0232 if(KF${QT_MAJOR_VERSION}DocTools_FOUND)
0233 kdoctools_install(po)
0234 endif()
0235
0236 ecm_qt_install_logging_categories(
0237 EXPORT KRDC
0238 DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0239 )
0240
0241 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0242 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0243
0244 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0245
0246 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)