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 )