Warning, /frameworks/kdesu/src/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 add_subdirectory(kdesud)
0002
0003 include(CheckTypeSize)
0004 include(CheckIncludeFiles)
0005 include(CheckFunctionExists)
0006
0007 check_function_exists(setpriority HAVE_SETPRIORITY)
0008 check_function_exists(getpeereid HAVE_GETPEEREID)
0009 check_function_exists(initgroups HAVE_INITGROUPS)
0010
0011 check_include_files(sys/select.h HAVE_SYS_SELECT_H)
0012
0013 set(CMAKE_EXTRA_INCLUDE_FILES sys/socket.h)
0014 check_type_size("struct ucred" STRUCT_UCRED) #defines HAVE_STRUCT_UCRED (bool) and STRUCT_UCRED (size, unused)
0015 set(CMAKE_EXTRA_INCLUDE_FILES) #reset CMAKE_EXTRA_INCLUDE_FILES
0016
0017 configure_file(config-kdesu.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kdesu.h)
0018
0019 add_library(KF5Su)
0020 add_library(KF5::Su ALIAS KF5Su)
0021
0022 set_target_properties(KF5Su PROPERTIES
0023 VERSION ${KDESU_VERSION}
0024 SOVERSION ${KDESU_SOVERSION}
0025 EXPORT_NAME Su
0026 )
0027
0028 target_sources(KF5Su PRIVATE
0029 client.cpp
0030 ptyprocess.cpp
0031 kcookie.cpp
0032 suprocess.cpp
0033 sshprocess.cpp
0034 stubprocess.cpp
0035 )
0036
0037 ecm_qt_declare_logging_category(KF5Su
0038 HEADER ksu_debug.h
0039 IDENTIFIER KSU_LOG
0040 CATEGORY_NAME kf.su
0041 DESCRIPTION "KSu (KDESu)"
0042 EXPORT KSU
0043 )
0044
0045 ecm_generate_export_header(KF5Su
0046 EXPORT_FILE_NAME kdesu/kdesu_export.h
0047 BASE_NAME KDESu
0048 GROUP_BASE_NAME KF
0049 VERSION ${KF_VERSION}
0050 DEPRECATED_BASE_VERSION 0
0051 DEPRECATION_VERSIONS 5.0 5.99
0052 EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
0053 )
0054
0055 if(KDESU_USE_SUDO_DEFAULT)
0056 target_compile_definitions(KF5Su PRIVATE -DKDESU_USE_SUDO_DEFAULT="true")
0057 elseif(KDESU_USE_DOAS_DEFAULT)
0058 target_compile_definitions(KF5Su PRIVATE -DKDESU_USE_DOAS_DEFAULT="true")
0059 endif()
0060
0061 target_include_directories(KF5Su PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/..)
0062
0063 # Apps must include <KDESu/File> or <kdesu/file.h>
0064 target_include_directories(KF5Su INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KDESu>")
0065
0066 target_link_libraries(KF5Su
0067 PUBLIC
0068 KF5::Pty
0069 PRIVATE
0070 KF5::CoreAddons # KUser::loginName
0071 KF5::ConfigCore # KConfigGroup
0072 )
0073
0074
0075 ecm_generate_headers(KDESu_CamelCase_HEADERS
0076 HEADER_NAMES
0077 PtyProcess
0078 SuProcess
0079 SshProcess
0080 StubProcess
0081 Client # technically the class is called KDEsuClient...
0082
0083 PREFIX KDESu
0084 REQUIRED_HEADERS KDESu_HEADERS
0085 )
0086 install(FILES ${KDESu_CamelCase_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KDESu/KDESu COMPONENT Devel)
0087
0088 install(TARGETS KF5Su EXPORT KF5SuTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
0089
0090 ########### next target ###############
0091
0092 include(ECMMarkNonGuiExecutable)
0093
0094 set_source_files_properties(kdesu_stub.c PROPERTIES
0095 COMPILE_DEFINITIONS "_XOPEN_SOURCE;_BSD_SOURCE")
0096 add_executable(kdesu_stub kdesu_stub.c)
0097 ecm_mark_nongui_executable(kdesu_stub)
0098
0099 install(TARGETS kdesu_stub DESTINATION ${KDE_INSTALL_LIBEXECDIR_KF})
0100
0101 ########### install files ###############
0102 install(FILES
0103 compatheaders/su.h
0104 compatheaders/ssh.h
0105 compatheaders/stub.h
0106 compatheaders/process.h
0107 defaults.h
0108 ${CMAKE_CURRENT_BINARY_DIR}/kdesu/kdesu_export.h
0109 ${KDESu_HEADERS}
0110 DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KDESu/kdesu COMPONENT Devel
0111 )
0112
0113 if(BUILD_QCH)
0114 ecm_add_qch(
0115 KF5Su_QCH
0116 NAME KDESu
0117 BASE_NAME KF5Su
0118 VERSION ${KF_VERSION}
0119 ORG_DOMAIN org.kde
0120 SOURCES # using only public headers, to cover only public API
0121 ${KDESu_HEADERS}
0122 MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
0123 LINK_QCHS
0124 KF5Pty_QCH
0125 INCLUDE_DIRS
0126 ${CMAKE_CURRENT_BINARY_DIR}
0127 BLANK_MACROS
0128 KDESU_EXPORT
0129 KDESU_DEPRECATED
0130 KDESU_DEPRECATED_EXPORT
0131 "KDESU_DEPRECATED_VERSION(x, y, t)"
0132 TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0133 QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
0134 COMPONENT Devel
0135 )
0136 endif()
0137
0138 include(ECMGeneratePriFile)
0139 ecm_generate_pri_file(BASE_NAME KDESu LIB_NAME KF5Su DEPS "KPty" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF}/KDESu)
0140 install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})
0141
0142 ecm_qt_install_logging_categories(
0143 EXPORT KSU
0144 FILE ksu.categories
0145 DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0146 )