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)