Warning, /plasma/kwrited/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16)
0002
0003 project(kwrited)
0004 set(PROJECT_VERSION "6.0.80")
0005
0006 set(QT_MIN_VERSION "6.6.0")
0007 set(KF6_MIN_VERSION "5.240.0")
0008 set(KDE_COMPILERSETTINGS_LEVEL "5.82")
0009
0010 set(CMAKE_CXX_STANDARD 20)
0011 set(CMAKE_CXX_STANDARD_REQUIRED ON)
0012
0013 find_package(ECM ${KF6_MIN_VERSION} REQUIRED NO_MODULE)
0014 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} )
0015
0016 include(CMakeDependentOption)
0017 include(KDEInstallDirs)
0018 include(KDECMakeSettings)
0019 include(KDECompilerSettings NO_POLICY_SCOPE)
0020 include(FeatureSummary)
0021 include(KDEClangFormat)
0022 include(KDEGitCommitHooks)
0023 include(ECMDeprecationSettings)
0024
0025 find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
0026 Gui
0027 )
0028
0029 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
0030 CoreAddons
0031 I18n
0032 Pty
0033 Notifications
0034 )
0035
0036 cmake_dependent_option(BUILD_AS_EXECUTABLE "Whether to build kwrited as executable" OFF
0037 "KPty_HAVE_UTEMPTER" ON)
0038
0039 if (NOT BUILD_AS_EXECUTABLE)
0040 find_package(KF6DBusAddons ${KF6_MIN_VERSION})
0041 set_package_properties(KF6DBusAddons PROPERTIES DESCRIPTION "Convenience classes for DBus"
0042 TYPE REQUIRED
0043 PURPOSE "Needed to build kwrited's KDED module"
0044 )
0045 endif ()
0046
0047 add_definitions(-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT)
0048 add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
0049
0050 ecm_set_disabled_deprecation_versions(QT 6.4.0
0051 KF 5.101
0052 )
0053
0054 # If libutempter is not available on the system, we build
0055 # kwrited as an executable that is installed with setuid root
0056 # (or setgid utmp) in order to be able to login successfully
0057 # (and thus be useful, as kwrited does not work at all if it
0058 # cannot login to the terminal device that it opens).
0059
0060 configure_file(config-kwrited.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kwrited.h)
0061
0062 if (BUILD_AS_EXECUTABLE)
0063 add_executable(kwrited kwrited.cpp)
0064 target_compile_definitions(kwrited PRIVATE -DPROJECT_VERSION="${PROJECT_VERSION}")
0065 target_link_libraries(kwrited Qt::Gui KF6::CoreAddons KF6::I18n KF6::Notifications KF6::Pty)
0066 install(TARGETS kwrited ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
0067 if(IS_ABSOLUTE BIN_INSTALL_DIR)
0068 set(ABS_BIN_INSTALL_DIR "${KDE_INSTALL_BINDIR}")
0069 else()
0070 set(ABS_BIN_INSTALL_DIR "\${CMAKE_INSTALL_PREFIX}/${KDE_INSTALL_BINDIR}")
0071 endif()
0072 install(CODE "
0073 set(KWRITED_PATH \"\$ENV{DESTDIR}${ABS_BIN_INSTALL_DIR}/kwrited\")
0074
0075 # On Debian we setgid instead of setuid.
0076 # Feel free to add checks here for other distros as well, if needed.
0077 if (EXISTS /etc/debian_version)
0078 set(SETGID 1)
0079 set(SETGID_GROUP utmp)
0080 endif ()
0081
0082 if (SETGID)
0083 execute_process(COMMAND sh -c \"chgrp \${SETGID_GROUP} '\${KWRITED_PATH}' && chmod g+s '\${KWRITED_PATH}'\")
0084 else ()
0085 execute_process(COMMAND sh -c \"chown root '\${KWRITED_PATH}' && chmod u+s '\${KWRITED_PATH}'\")
0086 endif()
0087 ")
0088
0089 install(FILES kwrited-autostart.desktop DESTINATION ${KDE_INSTALL_AUTOSTARTDIR})
0090 else ()
0091 kcoreaddons_add_plugin(kded_kwrited
0092 SOURCES kwrited.cpp
0093 INSTALL_NAMESPACE "kf6/kded"
0094 )
0095 set_target_properties(kded_kwrited PROPERTIES OUTPUT_NAME kwrited)
0096 target_compile_definitions(kded_kwrited PRIVATE -DPROJECT_VERSION="${PROJECT_VERSION}")
0097 target_link_libraries(kded_kwrited KF6::CoreAddons KF6::DBusAddons KF6::I18n KF6::Notifications KF6::Pty)
0098 endif ()
0099
0100 # The .notifyrc file is common
0101 install(FILES kwrited.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})
0102
0103 # add clang-format target for all our real source files
0104 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0105 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0106 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
0107
0108 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)