diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/FindPolkitQt.cmake | 85 | ||||
| -rw-r--r-- | modules/MacroKAuth.cmake | 61 | 
2 files changed, 146 insertions, 0 deletions
| diff --git a/modules/FindPolkitQt.cmake b/modules/FindPolkitQt.cmake new file mode 100644 index 00000000..bf3980a9 --- /dev/null +++ b/modules/FindPolkitQt.cmake @@ -0,0 +1,85 @@ +# - Try to find Polkit-qt +# Once done this will define +# +#  POLKITQT_FOUND - system has Polkit-qt +#  POLKITQT_INCLUDE_DIR - the Polkit-qt include directory +#  POLKITQT_LIBRARIES - Link these to use all Polkit-qt libs +#  POLKITQT_CORE_LIBRARY +#  POLKITQT_GUI_LIBRARY +#  POLKITQT_DEFINITIONS - Compiler switches required for using Polkit-qt + +# Copyright (c) 2008, Adrien Bustany, <madcat@mymadcat.com> +# Copyright (c) 2009, Daniel Nicoletti, <dantti85-pk@yahoo.com.br> +# Copyright (c) 2009, Dario Freddi, <drf54321@gmail.com> +# Copyright (c) 2009, Michal Malek, <michalm@jabster.pl> +# +# Redistribution and use is allowed according to the terms of the GPLv2+ license. + +if (POLKITQT_INCLUDE_DIR AND POLKITQT_LIB) +    set(POLKITQT_FIND_QUIETLY TRUE) +endif (POLKITQT_INCLUDE_DIR AND POLKITQT_LIB) + +include(FindPkgConfig) + +if (NOT POLKITQT_MIN_VERSION) +  set(POLKITQT_MIN_VERSION "0.9.0") +endif (NOT POLKITQT_MIN_VERSION) + +pkg_search_module( POLKITQT polkit-qt ) + +if (POLKITQT_FOUND) +    if (POLKITQT_VERSION VERSION_LESS POLKITQT_MIN_VERSION) +        message(STATUS "Found Polkit-Qt release < ${POLKITQT_MIN_VERSION}") +        message(STATUS "You need Polkit-Qt version ${POLKITQT_MIN_VERSION} or newer to compile this component") +        set(POLKITQT_FOUND FALSE) +        return() +    else (POLKITQT_VERSION VERSION_LESS POLKITQT_MIN_VERSION) +        message(STATUS "Found Polkit-Qt release >= ${POLKITQT_MIN_VERSION}") +    endif (POLKITQT_VERSION VERSION_LESS POLKITQT_MIN_VERSION) +else (POLKITQT_FOUND) +    set(POLKITQT_FOUND FALSE) +    message(STATUS "Cannot find Polkit-Qt library!") +    return() +endif (POLKITQT_FOUND) + + +# find_path( POLKITQT_INCLUDE_DIR PolicyKit/policykit-qt/Polkit-qt ) +find_path( POLKITQT_INCLUDE_DIR PolicyKit/polkit-qt/ ) + +find_library( POLKITQT_CORE_LIBRARY NAMES polkit-qt-core ) +find_library( POLKITQT_GUI_LIBRARY NAMES polkit-qt-gui ) + +if (POLKITQT_INCLUDE_DIR AND POLKITQT_CORE_LIBRARY AND POLKITQT_GUI_LIBRARY) +   set(POLKITQT_FOUND TRUE) +else (POLKITQT_INCLUDE_DIR AND POLKITQT_CORE_LIBRARY AND POLKITQT_GUI_LIBRARY) +   set(POLKITQT_FOUND FALSE) +endif (POLKITQT_INCLUDE_DIR AND POLKITQT_CORE_LIBRARY AND POLKITQT_GUI_LIBRARY) + +set(POLKITQT_LIBRARIES ${POLKITQT_CORE_LIBRARY} ${POLKITQT_GUI_LIBRARY}) + +set(POLKITQT_INCLUDE_DIR ${POLKITQT_INCLUDE_DIR}/PolicyKit/polkit-qt ${POLKITQT_INCLUDE_DIR}/PolicyKit/) + +set(POLICY_FILES_INSTALL_DIR ${POLKITQT_PREFIX}/share/PolicyKit/policy/) + +if (POLKITQT_FOUND) +  if (NOT POLKITQT_FIND_QUIETLY) +    message(STATUS "Found Polkit-Qt: ${POLKITQT_LIBRARIES}") +  endif (NOT POLKITQT_FIND_QUIETLY) +else (POLKITQT_FOUND) +  if (POLKITQT_FIND_REQUIRED) +    message(FATAL_ERROR "Could NOT find Polkit-Qt") +  endif (POLKITQT_FIND_REQUIRED) +endif (POLKITQT_FOUND) + +mark_as_advanced(POLKITQT_INCLUDE_DIR POLKITQT_LIB) + +macro(dbus_add_activation_system_service _sources) +    pkg_search_module( DBUS dbus-1 ) +    foreach (_i ${_sources}) +        get_filename_component(_service_file ${_i} ABSOLUTE) +        string(REGEX REPLACE "\\.service.*$" ".service" _output_file ${_i}) +        set(_target ${CMAKE_CURRENT_BINARY_DIR}/${_output_file}) +        configure_file(${_service_file} ${_target}) +        install(FILES ${_target} DESTINATION ${DBUS_PREFIX}/share/dbus-1/system-services ) +    endforeach (_i ${ARGN}) +endmacro(dbus_add_activation_system_service _sources) diff --git a/modules/MacroKAuth.cmake b/modules/MacroKAuth.cmake new file mode 100644 index 00000000..f051ee4e --- /dev/null +++ b/modules/MacroKAuth.cmake @@ -0,0 +1,61 @@ + +execute_process(COMMAND "${KDE4_KDECONFIG_EXECUTABLE}" --path data --locate kauth/dbus_service.stub OUTPUT_VARIABLE KDE4_KAUTH_DBUS_SERVICE_STUB ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +message(STATUS "KAuth: DBus service stub file found at ${KDE4_KAUTH_DBUS_SERVICE_STUB}") +execute_process(COMMAND "${KDE4_KDECONFIG_EXECUTABLE}" --path data --locate kauth/dbus_policy.stub OUTPUT_VARIABLE KDE4_KAUTH_DBUS_POLICY_STUB ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) +message(STATUS "KAuth: DBus policy stub file found at ${KDE4_KAUTH_DBUS_POLICY_STUB}") +execute_process(COMMAND "${KDE4_KDECONFIG_EXECUTABLE}" --path libexec --locate kauth-policy-gen OUTPUT_VARIABLE KDE4_KAUTH_POLICY_GEN ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + +set( KDE4_KAUTH_DBUS_POLICY_STUB ${DATA_INSTALL_DIR}/kauth/dbus_policy.stub) +set( KDE4_KAUTH_DBUS_SERVICE_STUB ${DATA_INSTALL_DIR}/kauth/dbus_service.stub) +set( KDE4_KAUTH_POLICY_GEN ${LIBEXEC_INSTALL_DIR}/kauth-policy-gen) + +if(NOT KDE4_KAUTH_DBUS_SERVICE_STUB) +	message(FATAL_ERROR "DBus service stub file couldn't be found (required by kde4_auth_add_helper macro)") +endif(NOT KDE4_KAUTH_DBUS_SERVICE_STUB) + +if(NOT KDE4_KAUTH_DBUS_POLICY_STUB) +	message(FATAL_ERROR "DBus policy stub file couldn't be found (required by kde4_auth_add_helper macro)") +endif(NOT KDE4_KAUTH_DBUS_POLICY_STUB) + +if(NOT KDE4_KAUTH_POLICY_GEN) +	message(FATAL_ERROR "KAuth policy generator tool couldn't be found (required by kde4_auth_register_actions macro)") +endif(NOT KDE4_KAUTH_POLICY_GEN) + +macro(kde4_auth_add_helper _HELPER_TARGET _HELPER_ID _HELPER_USER) +     +    set(HELPER_ID ${_HELPER_ID}) +    set(HELPER_TARGET ${_HELPER_TARGET}) +    set(HELPER_USER ${_HELPER_USER}) +     +    kde4_add_executable(${HELPER_TARGET} ${ARGN}) +    target_link_libraries(${HELPER_TARGET} ${KDE4_KDECORE_LIBS}) +    install(TARGETS ${HELPER_TARGET} DESTINATION ${LIBEXEC_INSTALL_DIR}) +     +    configure_file(${KDE4_KAUTH_DBUS_POLICY_STUB} ${CMAKE_CURRENT_BINARY_DIR}/${HELPER_ID}.conf) +    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${HELPER_ID}.conf DESTINATION /etc/dbus-1/system.d/) + +    configure_file(${KDE4_KAUTH_DBUS_SERVICE_STUB} ${CMAKE_CURRENT_BINARY_DIR}/${HELPER_ID}.service) +    install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${HELPER_ID}.service DESTINATION /usr/share/dbus-1/system-services ) +     + +endmacro(kde4_auth_add_helper) + +macro(kde4_auth_register_actions HELPER_ID ACTIONS_FILE) + +if(APPLE) +    install(CODE "execute_process(COMMAND ${KDE4_KAUTH_POLICY_GEN} ${ACTIONS_FILE} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})") +elseif(UNIX) +    set(_output ${CMAKE_CURRENT_BINARY_DIR}/${HELPER_ID}.policy) +    get_filename_component(_input ${ACTIONS_FILE} ABSOLUTE) +     +    add_custom_command(OUTPUT ${_output}  +                       COMMAND ${KDE4_KAUTH_POLICY_GEN} ${_input} > ${_output}  +                       MAIN_DEPENDENCY ${_input} +                       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} +                       COMMENT "Generating ${HELPER_ID}.policy") +    add_custom_target("actions for ${HELPER_ID}" ALL DEPENDS ${_output}) + +    install(FILES ${_output} DESTINATION ${POLICY_FILES_INSTALL_DIR}) +endif() + +endmacro(kde4_auth_register_actions) | 
