aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDario Freddi <drf@kde.org>2009-08-31 00:25:55 +0000
committerDario Freddi <drf@kde.org>2009-08-31 00:25:55 +0000
commit8d88fdf2461f7fe521ba2a4da945ed670557eb13 (patch)
treef31ea58cd2eb75b93234de42a160e25efa003ffe /modules
parent6027502a31085d722c07bd5a105346c3629e1a97 (diff)
downloadextra-cmake-modules-8d88fdf2461f7fe521ba2a4da945ed670557eb13.tar.gz
extra-cmake-modules-8d88fdf2461f7fe521ba2a4da945ed670557eb13.tar.bz2
CCMAIL: nicola.gigante@gmail.com
Merging the KAuth framework, part of Nicola's GSoC project, into KDELibs svn path=/trunk/KDE/kdelibs/; revision=1017607
Diffstat (limited to 'modules')
-rw-r--r--modules/FindPolkitQt.cmake85
-rw-r--r--modules/MacroKAuth.cmake61
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)