kdelibs/kdecore/auth/ConfigureChecks.cmake

245 lines
12 KiB
CMake
Raw Normal View History

2014-11-13 01:04:59 +02:00
####### checks for kdecore/kauth ###############
set(KDE4_AUTH_BACKEND_NAME "" CACHE STRING "Specifies the KAuth backend to build. Current available options are
PolkitQt, PolkitQt-1, Fake, Apple. Not setting this variable will build the most
appropriate backend for your system")
set(KAUTH_BACKEND ${KDE4_AUTH_BACKEND_NAME})
## Check if the user did not specify a backend to be built. If that is the case,
## we check what is the best backend to build on this system.
if(NOT KAUTH_BACKEND)
# Look for the most appropriate backend
message(STATUS "No backend for KAuth was explicitly specified: probing system to find the best one available")
if (APPLE)
set (KAUTH_BACKEND "OSX")
elseif (UNIX)
macro_optional_find_package(PolkitQt-1 0.99.0)
if (POLKITQT-1_FOUND)
set (KAUTH_BACKEND "PolkitQt-1")
set_package_properties(PolkitQt-1 PROPERTIES DESCRIPTION "Support for executing privileged actions in a controlled way (KAuth)"
URL "http://techbase.kde.org/Polkit-Qt-1"
TYPE RECOMMENDED
)
else (POLKITQT-1_FOUND)
macro_optional_find_package(PolkitQt)
if (POLKITQT_FOUND)
set (KAUTH_BACKEND "PolkitQt")
set_package_properties(PolkitQt PROPERTIES DESCRIPTION "Support for executing privileged actions in a controlled way (KAuth)"
URL "http://api.kde.org/polkit-qt"
TYPE RECOMMENDED
)
else (POLKITQT_FOUND)
# Nothing was found: notify and log the missing features
set_package_properties(PolkitQt-1 PROPERTIES DESCRIPTION "Support for executing privileged actions in a controlled way (KAuth)"
URL "http://techbase.kde.org/Polkit-Qt-1"
TYPE RECOMMENDED
PURPOSE "Either this or PolkitQt is required to make KAuth work, and hence enable certain workspace functionalities"
)
set_package_properties(PolkitQt PROPERTIES DESCRIPTION "Support for executing privileged actions in a controlled way (KAuth)"
URL "http://api.kde.org/polkit-qt"
TYPE RECOMMENDED
PURPOSE "Either this or PolkitQt-1 is required to make KAuth work, and hence enable certain workspace functionalities"
)
set (KAUTH_BACKEND "Fake")
endif (POLKITQT_FOUND)
endif (POLKITQT-1_FOUND)
else(UNIX)
set (KAUTH_BACKEND "Fake")
endif(APPLE)
# Case-insensitive
string(TOUPPER ${KAUTH_BACKEND} KAUTH_BACKEND_UPPER)
set (KAUTH_BACKEND ${KAUTH_BACKEND_UPPER})
else(NOT KAUTH_BACKEND)
# Case-insensitive
string(TOUPPER ${KAUTH_BACKEND} KAUTH_BACKEND_UPPER)
set (KAUTH_BACKEND ${KAUTH_BACKEND_UPPER})
# Check if the specified backend is valid. If it is not, we fall back to the Fake one
if (NOT KAUTH_BACKEND STREQUAL "OSX" AND NOT KAUTH_BACKEND STREQUAL "POLKITQT" AND NOT KAUTH_BACKEND STREQUAL "POLKITQT-1" AND NOT KAUTH_BACKEND STREQUAL "FAKE")
message ("WARNING: The KAuth Backend ${KAUTH_BACKEND} you specified does not exist. Falling back to Fake backend")
set (KAUTH_BACKEND "FAKE")
endif (NOT KAUTH_BACKEND STREQUAL "OSX" AND NOT KAUTH_BACKEND STREQUAL "POLKITQT" AND NOT KAUTH_BACKEND STREQUAL "POLKITQT-1" AND NOT KAUTH_BACKEND STREQUAL "FAKE")
# Check requirements for each backend. If not, fall back to the fake one
if (KAUTH_BACKEND STREQUAL "OSX" AND NOT APPLE)
message ("WARNING: You chose the Apple KAuth backend but your system does not support it. Falling back to Fake backend")
set (KAUTH_BACKEND "FAKE")
endif (KAUTH_BACKEND STREQUAL "OSX" AND NOT APPLE)
if (KAUTH_BACKEND STREQUAL "POLKITQT")
macro_optional_find_package(PolkitQt)
macro_log_feature(POLKITQT_FOUND "PolkitQt" "Support for executing priviledged actions in a controlled way (KAuth)" "http://api.kde.org/polkit-qt"
FALSE "" "STRONGLY RECOMMENDED: Required to make KAuth work, and hence enable certain workspace functionalities")
if (NOT POLKITQT_FOUND)
message ("WARNING: You chose the PolkitQt KAuth backend but you don't have PolkitQt installed.
Falling back to Fake backend")
set (KAUTH_BACKEND "FAKE")
endif (NOT POLKITQT_FOUND)
endif (KAUTH_BACKEND STREQUAL "POLKITQT")
if (KAUTH_BACKEND STREQUAL "POLKITQT-1")
macro_optional_find_package(PolkitQt-1 0.99.0)
macro_log_feature(POLKITQT-1_FOUND "PolkitQt-1" "Support for executing priviledged actions in a controlled way (KAuth)" "http://techbase.kde.org/Polkit-Qt-1"
FALSE "" "STRONGLY RECOMMENDED: Required to make KAuth work, and hence enable certain workspace functionalities")
if (NOT POLKITQT-1_FOUND)
message ("WARNING: You chose the PolkitQt-1 KAuth backend but you don't have PolkitQt-1 installed.
Falling back to Fake backend")
set (KAUTH_BACKEND "FAKE")
endif (NOT POLKITQT-1_FOUND)
endif (KAUTH_BACKEND STREQUAL "POLKITQT-1")
endif(NOT KAUTH_BACKEND)
set(KDE4_AUTH_BACKEND_NAME ${KAUTH_BACKEND} CACHE STRING "Specifies the KAuth backend to build. Current available options are
PolkitQt, PolkitQt-1, Fake, Apple. Not setting this variable will build the most
appropriate backend for your system" FORCE)
# Add the correct libraries depending on the backend, and eventually set the policy files install location
if(KDE4_AUTH_BACKEND_NAME STREQUAL "OSX")
set (KAUTH_COMPILING_OSX_BACKEND TRUE)
find_library(CORE_FOUNDATION_LIBRARY CoreFoundation)
find_library(SECURITY_LIBRARY Security)
message(STATUS "Building Apple KAuth backend")
set(KAUTH_BACKEND_SRCS
auth/backends/mac/AuthServicesBackend.cpp
)
set(KAUTH_BACKEND_LIBS ${SECURITY_LIBRARY} ${QT_QTCORE_LIBRARY})
elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "POLKITQT")
set (KAUTH_COMPILING_POLKITQT_BACKEND TRUE)
message(STATUS "Building PolkitQt KAuth backend")
include_directories(${POLKITQT_INCLUDE_DIR})
set(KAUTH_BACKEND_SRCS
auth/backends/policykit/PolicyKitBackend.cpp
)
set(KAUTH_BACKEND_LIBS ${POLKITQT_CORE_LIBRARY} ${QT_QTCORE_LIBRARY})
set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR ${POLKITQT_POLICY_FILES_INSTALL_DIR} CACHE STRING
"Where policy files generated by KAuth will be installed" FORCE)
elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "POLKITQT-1")
set (KAUTH_COMPILING_POLKITQT1_BACKEND TRUE)
message(STATUS "Building PolkitQt-1 KAuth backend")
include_directories(${POLKITQT-1_INCLUDE_DIR})
set(KAUTH_BACKEND_SRCS
auth/backends/polkit-1/Polkit1Backend.cpp
)
set(KAUTH_BACKEND_LIBS ${POLKITQT-1_CORE_LIBRARY} ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY} ${QT_QTGUI_LIBRARY} kdecore)
if (Q_WS_X11)
# QtGui as well
set(KAUTH_BACKEND_LIBS ${KAUTH_BACKEND_LIBS} ${QT_QTGUI_LIBRARY})
endif (Q_WS_X11)
# POLKITQT-1_POLICY_FILES_INSTALL_DIR has an absolute pathname, fix that.
string(REPLACE ${POLKITQT-1_INSTALL_DIR}
${CMAKE_INSTALL_PREFIX} _KDE4_AUTH_POLICY_FILES_INSTALL_DIR
${POLKITQT-1_POLICY_FILES_INSTALL_DIR})
set(KDE4_AUTH_POLICY_FILES_INSTALL_DIR ${_KDE4_AUTH_POLICY_FILES_INSTALL_DIR} CACHE STRING
"Where policy files generated by KAuth will be installed" FORCE)
elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "FAKE")
set (KAUTH_COMPILING_FAKE_BACKEND TRUE)
message(STATUS "Building Fake KAuth backend")
message("WARNING: No valid KAuth backends will be built. The library will not work properly unless compiled with
a working backend")
endif()
# KAuth policy generator executable source probing
set(KAUTH_POLICY_GEN_SRCS
auth/policy-gen/policy-gen.cpp )
set(KAUTH_POLICY_GEN_LIBRARIES ${QT_QTCORE_LIBRARY})
if(KDE4_AUTH_BACKEND_NAME STREQUAL "OSX")
set(KAUTH_POLICY_GEN_SRCS ${KAUTH_POLICY_GEN_SRCS}
auth/backends/mac/kauth-policy-gen-mac.cpp)
set(KAUTH_POLICY_GEN_LIBRARIES ${KAUTH_POLICY_GEN_LIBRARIES} ${CORE_FOUNDATION_LIBRARY} ${SECURITY_LIBRARY})
elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "POLKITQT")
set(KAUTH_POLICY_GEN_SRCS ${KAUTH_POLICY_GEN_SRCS}
auth/backends/policykit/kauth-policy-gen-polkit.cpp )
elseif(KDE4_AUTH_BACKEND_NAME STREQUAL "POLKITQT-1")
set(KAUTH_POLICY_GEN_SRCS ${KAUTH_POLICY_GEN_SRCS}
auth/backends/polkit-1/kauth-policy-gen-polkit1.cpp )
endif()
########################
# Helper backend probing
set(KDE4_AUTH_HELPER_BACKEND_NAME "" CACHE STRING "Specifies the KAuth helper backend to build. Current available options are
DBus, Fake. Not setting this variable will build the most appropriate backend for your system")
set(KAUTH_HELPER_BACKEND ${KDE4_AUTH_HELPER_BACKEND_NAME})
if(NOT KAUTH_HELPER_BACKEND)
# No checks needed, just set the dbus backend
set(KAUTH_HELPER_BACKEND "DBus")
string(TOUPPER ${KAUTH_HELPER_BACKEND} KAUTH_HELPER_BACKEND_UPPER)
set (KAUTH_HELPER_BACKEND ${KAUTH_HELPER_BACKEND_UPPER})
else(NOT KAUTH_HELPER_BACKEND)
# No checks needed here either
string(TOUPPER ${KAUTH_HELPER_BACKEND} KAUTH_HELPER_BACKEND_UPPER)
set (KAUTH_HELPER_BACKEND ${KAUTH_HELPER_BACKEND_UPPER})
endif(NOT KAUTH_HELPER_BACKEND)
set(KDE4_AUTH_HELPER_BACKEND_NAME ${KAUTH_HELPER_BACKEND} CACHE STRING "Specifies the KAuth helper backend to build. Current
available options are DBus, Fake. Not setting this variable will
build the most appropriate backend for your system" FORCE)
# Add the correct libraries/files depending on the backend
if(KDE4_AUTH_HELPER_BACKEND_NAME STREQUAL "DBUS")
set (KAUTH_COMPILING_DBUS_HELPER_BACKEND TRUE)
qt4_add_dbus_adaptor(kauth_dbus_adaptor_SRCS
auth/backends/dbus/org.kde.auth.xml
auth/backends/dbus/DBusHelperProxy.h
KAuth::DBusHelperProxy)
set(KAUTH_HELPER_BACKEND_SRCS
auth/backends/dbus/DBusHelperProxy.cpp
${kauth_dbus_adaptor_SRCS}
)
set(KAUTH_HELPER_BACKEND_LIBS kdecore)
# Install some files as well
install( FILES auth/backends/dbus/org.kde.auth.conf
DESTINATION ${SYSCONF_INSTALL_DIR}/dbus-1/system.d )
install( FILES auth/backends/dbus/dbus_policy.stub
auth/backends/dbus/dbus_service.stub
DESTINATION ${DATA_INSTALL_DIR}/kauth COMPONENT Devel)
elseif(KDE4_AUTH_HELPER_BACKEND_NAME STREQUAL "FAKE")
set (KAUTH_COMPILING_FAKE_HELPER_BACKEND TRUE)
message("WARNING: No valid KAuth helper backends will be built. The library will not work properly unless compiled with
a working backend")
endif()
# Set directories for plugins
if(NOT WIN32)
_set_fancy(KAUTH_HELPER_PLUGIN_DIR "${PLUGIN_INSTALL_DIR}/plugins/kauth/helper" "Where KAuth's helper plugin will be installed")
_set_fancy(KAUTH_BACKEND_PLUGIN_DIR "${PLUGIN_INSTALL_DIR}/plugins/kauth/backend" "Where KAuth's backend plugin will be installed")
#set(KAUTH_OTHER_PLUGIN_DIR "${QT_PLUGINS_DIR}/kauth/plugins")
else(NOT WIN32)
set(KAUTH_HELPER_PLUGIN_DIR "${PLUGIN_INSTALL_DIR}/plugins/kauth/helper")
set(KAUTH_BACKEND_PLUGIN_DIR "${PLUGIN_INSTALL_DIR}/plugins/kauth/backend")
endif(NOT WIN32)
## End