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)