1
0
mirror of https://invent.kde.org/network/krdc synced 2024-07-05 17:29:34 +00:00
krdc/CMakeLists.txt
Friedrich W. H. Kossebau 7c24e7737c Deploy ui.rc file as Qt resource
GIT_SILENT
2021-06-14 13:40:56 +02:00

170 lines
4.2 KiB
CMake

cmake_minimum_required(VERSION 3.5)
set (RELEASE_SERVICE_VERSION_MAJOR "21")
set (RELEASE_SERVICE_VERSION_MINOR "07")
set (RELEASE_SERVICE_VERSION_MICRO "70")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(krdc VERSION ${RELEASE_SERVICE_VERSION})
set (QT_MIN_VERSION "5.14.0")
set (KF5_MIN_VERSION "5.62.0")
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH})
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMSetupVersion)
include(ECMQtDeclareLoggingCategory)
include(FeatureSummary)
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core)
find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
Config
KCMUtils
DNSSD
NotifyConfig
Notifications
Bookmarks
IconThemes
XmlGui
Completion
Wallet
WidgetsAddons
WindowSystem
NotifyConfig
I18n
)
find_package(KF5DocTools)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "5.0.0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override" )
endif()
endif()
# use sane compile flags
add_definitions(
-DQT_USE_QSTRINGBUILDER
-DQT_NO_CAST_TO_ASCII
-DQT_NO_CAST_FROM_ASCII
-DQT_STRICT_ITERATORS
-DQT_NO_URL_CAST_FROM_STRING
-DQT_NO_CAST_FROM_BYTEARRAY
-DQT_NO_SIGNALS_SLOTS_KEYWORDS
)
ecm_setup_version(${RELEASE_SERVICE_VERSION}
VARIABLE_PREFIX KRDC
SOVERSION 5
VERSION_HEADER krdc_version.h
)
if(WIN32)
set(CMAKE_REQUIRED_LIBRARIES ${KDEWIN32_LIBRARIES})
set(CMAKE_REQUIRED_INCLUDES ${KDEWIN32_INCLUDES})
endif(WIN32)
find_package(LibVNCServer)
set_package_properties("libvncserver" PROPERTIES
DESCRIPTION "VNC server / client library"
URL "http://libvncserver.sourceforge.net/"
PURPOSE "Needed to build VNC client support in KRDC"
)
find_package(LibSSH)
set_package_properties("libssh" PROPERTIES
DESCRIPTION "ssh library"
URL "https://libssh.org/"
PURPOSE "Needed to build VNC+SSH tunnel support "
)
# Needs porting
find_program(FREERDP_EXECUTABLE xfreerdp)
if(FREERDP_EXECUTABLE)
set(FREERDP_FOUND true) # mark the package found
set(FREERDP_EXECUTABLE_FOUND true)
endif(FREERDP_EXECUTABLE)
# dud to allow the dep showing up in feature summary.
# note that this must be after _FOUND is set so it doesn't incorrectly
# set the metadata to not-found.
find_package(freerdp QUIET)
set_package_properties(freerdp PROPERTIES
DESCRIPTION "A free Remote Desktop Protocol (RDP) Implementation"
URL "https://www.freerdp.com/"
PURPOSE "The xfreerdp binary is needed for RDP support in KRDC (at runtime)"
TYPE RUNTIME
)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/core/
${CMAKE_CURRENT_BINARY_DIR}/core/
${CMAKE_CURRENT_BINARY_DIR}
)
add_subdirectory(core)
add_subdirectory(vnc)
add_subdirectory(rdp)
add_subdirectory(test)
if(KF5DocTools_FOUND)
add_subdirectory(doc)
else()
message("KF5DocTools not found. Not building documentation.")
endif()
add_definitions(-DBUILD_ZEROCONF)
set(krdc_SRCS
config/hostpreferenceslist.cpp
config/preferencesdialog.cpp
floatingtoolbar.cpp
bookmarkmanager.cpp
connectiondelegate.cpp
remotedesktopsmodel.cpp
systemtrayicon.cpp
tabbedviewwidget.cpp
factorwidget.cpp
mainwindow.cpp
main.cpp
krdc.qrc
)
ki18n_wrap_ui(krdc_SRCS
config/general.ui
)
ecm_qt_declare_logging_category(krdc_SRCS HEADER krdc_debug.h IDENTIFIER KRDC CATEGORY_NAME KRDC)
add_executable(krdc ${krdc_SRCS})
target_link_libraries(krdc
KF5::ConfigCore
KF5::KCMUtils
KF5::DNSSD
KF5::NotifyConfig
KF5::Bookmarks
KF5::IconThemes
KF5::XmlGui
KF5::Completion
KF5::WidgetsAddons
KF5::NotifyConfig
KF5::Notifications
krdccore
)
install(TARGETS krdc ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
install(PROGRAMS org.kde.krdc.desktop DESTINATION ${KDE_INSTALL_APPDIR})
install(FILES org.kde.krdc.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)