diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,11 @@ set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) set(REQUIRED_QT_VERSION 5.7.0) -find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets DBus) +find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED DBus) +option(KAUTH_BUILD_CODEGENERATOR_ONLY "Only build the kauth-policy-gen code generator." OFF) +if(NOT KAUTH_BUILD_CODEGENERATOR_ONLY) + find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets) +endif() include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) @@ -50,8 +54,10 @@ endif() add_subdirectory(src) -add_subdirectory(autotests) -add_subdirectory(examples) +if(TARGET Qt5::Widgets) + add_subdirectory(autotests) + add_subdirectory(examples) +endif() # create a Config.cmake and a ConfigVersion.cmake file and install them set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Auth") @@ -82,8 +88,10 @@ COMPONENT Devel ) -install(EXPORT KF5AuthTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" +if(TARGET KF5Auth) + install(EXPORT KF5AuthTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5AuthTargets.cmake NAMESPACE KF5:: COMPONENT Devel) +endif() if(NOT "${KAUTH_BACKEND_NAME}" STREQUAL "FAKE") install(EXPORT KF5AuthToolsTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,53 +1,59 @@ - -find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets DBus) - # This file handles all the logic for compiling KAuth's backends include(ConfigureChecks.cmake) # Configure a small file to tell BackendsManager what to use configure_file(BackendsConfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/BackendsConfig.h) ecm_create_qm_loader(KAuth_QM_LOADER kauth5_qt) -set(libkauth_SRCS - kauthaction.cpp - kauthactionreply.cpp - kauthexecutejob.cpp - kauthobjectdecorator.cpp - AuthBackend.cpp - BackendsManager.cpp - HelperProxy.cpp - kauthhelpersupport.cpp - kauthdebug.cpp - backends/fake/FakeBackend.cpp - backends/fakehelper/FakeHelperProxy.cpp - ${KAuth_QM_LOADER} -) - -add_library(KF5Auth ${libkauth_SRCS}) -generate_export_header(KF5Auth BASE_NAME KAuth) -add_library(KF5::Auth ALIAS KF5Auth) - -target_include_directories(KF5Auth INTERFACE "$") - -target_link_libraries(KF5Auth PUBLIC Qt5::Core KF5::CoreAddons) # for KJob -target_link_libraries(KF5Auth PRIVATE Qt5::Widgets Qt5::DBus) -set_target_properties(KF5Auth PROPERTIES VERSION ${KAUTH_VERSION_STRING} - SOVERSION ${KAUTH_SOVERSION} - EXPORT_NAME Auth -) - -ecm_generate_headers(KAuth_HEADERS - HEADER_NAMES - KAuth - KAuthHelperSupport - KAuthAction - KAuthActionReply - KAuthExecuteJob - KAuthObjectDecorator - - REQUIRED_HEADERS KAuth_HEADERS -) +if(TARGET Qt5::Widgets) + set(libkauth_SRCS + kauthaction.cpp + kauthactionreply.cpp + kauthexecutejob.cpp + kauthobjectdecorator.cpp + AuthBackend.cpp + BackendsManager.cpp + HelperProxy.cpp + kauthhelpersupport.cpp + kauthdebug.cpp + backends/fake/FakeBackend.cpp + backends/fakehelper/FakeHelperProxy.cpp + ${KAuth_QM_LOADER} + ) + + add_library(KF5Auth ${libkauth_SRCS}) + generate_export_header(KF5Auth BASE_NAME KAuth) + add_library(KF5::Auth ALIAS KF5Auth) + + target_include_directories(KF5Auth INTERFACE "$") + + target_link_libraries(KF5Auth PUBLIC Qt5::Core KF5::CoreAddons) # for KJob + target_link_libraries(KF5Auth PRIVATE Qt5::Widgets Qt5::DBus) + set_target_properties(KF5Auth PROPERTIES VERSION ${KAUTH_VERSION_STRING} + SOVERSION ${KAUTH_SOVERSION} + EXPORT_NAME Auth + ) + + ecm_generate_headers(KAuth_HEADERS + HEADER_NAMES + KAuth + KAuthHelperSupport + KAuthAction + KAuthActionReply + KAuthExecuteJob + KAuthObjectDecorator + + REQUIRED_HEADERS KAuth_HEADERS + ) + + install(TARGETS KF5Auth EXPORT KF5AuthTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) + install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/kauth_export.h + ${KAuth_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KAuth COMPONENT Devel + ) +endif() find_package(PythonModuleGeneration) @@ -93,7 +99,7 @@ # KAuth backend plugin -if (NOT "${KAUTH_BACKEND_NAME}" STREQUAL "FAKE") +if (NOT "${KAUTH_BACKEND_NAME}" STREQUAL "FAKE" AND TARGET Qt5::Widgets) set(KAUTH_BACKEND_SRCS ${KAUTH_BACKEND_SRCS}) # KAuth::AuthBackend is not exported add_library(kauth_backend_plugin MODULE ${KAUTH_BACKEND_SRCS} AuthBackend.cpp kauthdebug.cpp) @@ -109,7 +115,7 @@ # KAuth helper plugin -if (NOT "${KAUTH_HELPER_BACKEND_NAME}" STREQUAL "FAKE") +if (NOT "${KAUTH_HELPER_BACKEND_NAME}" STREQUAL "FAKE" AND TARGET Qt5::Widgets) # KAuth::HelperProxy is not exported add_library(kauth_helper_plugin MODULE ${KAUTH_HELPER_BACKEND_SRCS} HelperProxy.cpp kauthdebug.cpp) target_link_libraries(kauth_helper_plugin PRIVATE ${KAUTH_HELPER_BACKEND_LIBS}) @@ -121,14 +127,6 @@ ) endif () -install(TARGETS KF5Auth EXPORT KF5AuthTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) - -install(FILES - ${CMAKE_CURRENT_BINARY_DIR}/kauth_export.h - ${KAuth_HEADERS} - DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KAuth COMPONENT Devel -) - if(BUILD_QCH) ecm_add_qch( KF5Auth_QCH diff --git a/src/ConfigureChecks.cmake b/src/ConfigureChecks.cmake --- a/src/ConfigureChecks.cmake +++ b/src/ConfigureChecks.cmake @@ -61,7 +61,7 @@ # Case-insensitive string(TOUPPER ${KAUTH_BACKEND} KAUTH_BACKEND_UPPER) set (KAUTH_BACKEND ${KAUTH_BACKEND_UPPER}) -else(NOT KAUTH_BACKEND) +elseif(KAUTH_BACKEND AND NOT KAUTH_BUILD_CODEGENERATOR_ONLY) # Case-insensitive string(TOUPPER ${KAUTH_BACKEND} KAUTH_BACKEND_UPPER) set (KAUTH_BACKEND ${KAUTH_BACKEND_UPPER}) @@ -106,7 +106,7 @@ set (KAUTH_BACKEND "FAKE") endif (NOT PolkitQt5-1_FOUND) endif (KAUTH_BACKEND STREQUAL "POLKITQT5-1") -endif(NOT KAUTH_BACKEND) +endif() set(KAUTH_BACKEND_NAME ${KAUTH_BACKEND} CACHE STRING "Specifies the KAuth backend to build. Current available options are PolkitQt, PolkitQt5-1, Fake, Apple. Not setting this variable will build the most @@ -147,12 +147,14 @@ backends/polkit-1/Polkit1Backend.cpp ) - set(KAUTH_BACKEND_LIBS ${POLKITQT-1_CORE_LIBRARY} Qt5::DBus Qt5::Widgets) + set(KAUTH_BACKEND_LIBS ${POLKITQT-1_CORE_LIBRARY} Qt5::DBus Qt5::Widgets) # POLKITQT-1_POLICY_FILES_INSTALL_DIR has an absolute pathname, fix that. - string(REPLACE ${POLKITQT-1_INSTALL_DIR} - ${CMAKE_INSTALL_PREFIX} _KAUTH_POLICY_FILES_INSTALL_DIR - ${POLKITQT-1_POLICY_FILES_INSTALL_DIR}) + if(PolkitQt5-1_FOUND) + string(REPLACE ${POLKITQT-1_INSTALL_DIR} + ${CMAKE_INSTALL_PREFIX} _KAUTH_POLICY_FILES_INSTALL_DIR + ${POLKITQT-1_POLICY_FILES_INSTALL_DIR}) + endif() set(KAUTH_POLICY_FILES_INSTALL_DIR ${_KAUTH_POLICY_FILES_INSTALL_DIR} CACHE STRING "Where policy files generated by KAuth will be installed" FORCE)