diff --git a/CMakeLists.txt b/CMakeLists.txt index 440b1b2..2acc4d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,110 +1,109 @@ cmake_minimum_required(VERSION 3.5) set(KF5_VERSION "5.68.0") # handled by release scripts set(KF5_DEP_VERSION "5.67.0") # handled by release scripts project(KAuth VERSION ${KF5_VERSION}) include(FeatureSummary) find_package(ECM 5.67.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) set(REQUIRED_QT_VERSION 5.12.0) 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) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include(GenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) include(ECMQtDeclareLoggingCategory) include(ECMPoQmTools) include(ECMAddQch) option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") ecm_setup_version(PROJECT VARIABLE_PREFIX KAUTH VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kauth_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5AuthConfigVersion.cmake" SOVERSION 5) find_package(KF5CoreAddons ${KF5_DEP_VERSION} REQUIRED) set(KAUTH_HELPER_INSTALL_DIR "${KDE_INSTALL_LIBEXECDIR}/kauth") if(IS_ABSOLUTE ${KAUTH_HELPER_INSTALL_DIR}) set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR ${KAUTH_HELPER_INSTALL_DIR}) else() set(KAUTH_HELPER_INSTALL_ABSOLUTE_DIR "${CMAKE_INSTALL_PREFIX}/${KAUTH_HELPER_INSTALL_DIR}") endif() if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ecm_install_po_files_as_qm(po) endif() add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x054300) add_definitions(-DQT_NO_FOREACH) add_subdirectory(src) if(TARGET Qt5::Widgets) if (BUILD_TESTING) add_subdirectory(autotests) endif() add_subdirectory(examples) endif() # create a Config.cmake and a ConfigVersion.cmake file and install them set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Auth") if (BUILD_QCH) ecm_install_qch_export( TARGETS KF5Auth_QCH FILE KF5AuthQchTargets.cmake DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5AuthQchTargets.cmake\")") endif() include(CMakePackageConfigHelpers) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5AuthConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5AuthConfig.cmake" PATH_VARS KDE_INSTALL_DATADIR_KF5 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5AuthConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5AuthConfigVersion.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake/KF5AuthMacros.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel ) 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}" FILE KF5AuthToolsTargets.cmake NAMESPACE KF5:: COMPONENT Devel) endif() install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kauth_version.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel ) -install(FILES kauth.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}) feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/kauth.categories b/kauth.categories deleted file mode 100644 index 8bfdbe9..0000000 --- a/kauth.categories +++ /dev/null @@ -1 +0,0 @@ -kf5.kauth KAuth IDENTIFIER [KAUTH] diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8599ba1..074c834 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,187 +1,199 @@ # 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(kauthdebug_SRCS) -ecm_qt_declare_logging_category(kauthdebug_SRCS HEADER kauthdebug.h IDENTIFIER KAUTH CATEGORY_NAME kf5.kauth) +ecm_qt_declare_logging_category(kauthdebug_SRCS + HEADER kauthdebug.h + IDENTIFIER KAUTH + CATEGORY_NAME kf5.kauth + DESCRIPTION "KAuth" + EXPORT KAUTH +) if(TARGET Qt5::Widgets) # TODO KF6 Rename KAuth to KAuthWidgets # TODO KAuthCore should be installed also when no widgets available, in the header installation etc, so ignoring for now set(libkauth_core_SRCS kauthaction.cpp kauthactionreply.cpp kauthexecutejob.cpp AuthBackend.cpp BackendsManager.cpp HelperProxy.cpp kauthhelpersupport.cpp ${kauthdebug_SRCS} backends/fake/FakeBackend.cpp backends/fakehelper/FakeHelperProxy.cpp ${KAuth_QM_LOADER} ) add_library(KF5AuthCore ${libkauth_core_SRCS}) generate_export_header(KF5AuthCore BASE_NAME KAuthCore) add_library(KF5::AuthCore ALIAS KF5AuthCore) target_link_libraries(KF5AuthCore PUBLIC Qt5::Core KF5::CoreAddons) # for KJob target_link_libraries(KF5AuthCore PRIVATE Qt5::DBus) target_include_directories(KF5AuthCore INTERFACE "$") install(TARGETS KF5AuthCore EXPORT KF5AuthTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS}) set_target_properties(KF5AuthCore PROPERTIES VERSION ${KAUTH_VERSION_STRING} SOVERSION ${KAUTH_SOVERSION} EXPORT_NAME AuthCore) set(libkauth_SRCS ${kauthdebug_SRCS} kauthobjectdecorator.cpp ) 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 KF5AuthCore) target_link_libraries(KF5Auth PRIVATE Qt5::Widgets) 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 ${CMAKE_CURRENT_BINARY_DIR}/kauthcore_export.h ${KAuth_HEADERS} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KAuth COMPONENT Devel ) endif() find_package(PythonModuleGeneration) if (PythonModuleGeneration_FOUND) ecm_generate_python_binding( TARGET KF5::Auth PYTHONNAMESPACE PyKF5 MODULENAME KAuth RULES_FILE "${CMAKE_SOURCE_DIR}/cmake/rules_PyKF5.py" SIP_INCLUDES $ SIP_DEPENDS QtWidgets/QtWidgetsmod.sip PyKF5/KCoreAddons/KCoreAddonsmod.sip HEADERS kauth.h kauthhelpersupport.h kauthaction.h kauthactionreply.h kauthexecutejob.h kauthobjectdecorator.h ) endif() # KAuth policy generator executable # Compile only if fake backend has not been selected if (NOT "${KAUTH_BACKEND_NAME}" STREQUAL "FAKE") # KAUTH_POLICY_GEN_SRCS has been generated from ConfigureChecks.cmake add_executable(kauth-policy-gen ${KAUTH_POLICY_GEN_SRCS}) add_executable(KF5::kauth-policy-gen ALIAS kauth-policy-gen) if (APPLE) include(ECMMarkNonGuiExecutable) ecm_mark_nongui_executable(kauth-policy-gen) endif () # KAUTH_POLICY_GEN_LIBRARIES has been generated from ConfigureChecks.cmake target_link_libraries( kauth-policy-gen PRIVATE ${KAUTH_POLICY_GEN_LIBRARIES} ) install( TARGETS kauth-policy-gen EXPORT KF5AuthToolsTargets DESTINATION ${KAUTH_HELPER_INSTALL_DIR}) endif () # KAuth backend plugin 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_SRCS}) target_link_libraries(kauth_backend_plugin PRIVATE ${KAUTH_BACKEND_LIBS}) set_target_properties(kauth_backend_plugin PROPERTIES PREFIX "") install(TARGETS kauth_backend_plugin LIBRARY DESTINATION "${KDE_INSTALL_PLUGINDIR}/${KAUTH_BACKEND_PLUGIN_DIR}" ARCHIVE DESTINATION "${KDE_INSTALL_PLUGINDIR}/${KAUTH_BACKEND_PLUGIN_DIR}" RUNTIME DESTINATION "${KDE_INSTALL_PLUGINDIR}/${KAUTH_BACKEND_PLUGIN_DIR}" ) endif () # KAuth helper plugin 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_SRCS}) target_link_libraries(kauth_helper_plugin PRIVATE ${KAUTH_HELPER_BACKEND_LIBS}) set_target_properties(kauth_helper_plugin PROPERTIES PREFIX "") install(TARGETS kauth_helper_plugin LIBRARY DESTINATION "${KDE_INSTALL_PLUGINDIR}/${KAUTH_HELPER_PLUGIN_DIR}" ARCHIVE DESTINATION "${KDE_INSTALL_PLUGINDIR}/${KAUTH_HELPER_PLUGIN_DIR}" RUNTIME DESTINATION "${KDE_INSTALL_PLUGINDIR}/${KAUTH_HELPER_PLUGIN_DIR}" ) endif () +ecm_qt_install_logging_categories( + EXPORT KAUTH + FILE kauth.categories + DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} +) + if(BUILD_QCH) ecm_add_qch( KF5Auth_QCH NAME KAuth BASE_NAME KF5Auth VERSION ${KF5_VERSION} ORG_DOMAIN org.kde SOURCES # using only public headers, to cover only public API ${KAuth_HEADERS} MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" LINK_QCHS Qt5Core_QCH KF5CoreAddons_QCH INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} BLANK_MACROS KAUTHCORE_EXPORT KAUTH_EXPORT KAUTH_DEPRECATED KAUTH_DEPRECATED_EXPORT TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} COMPONENT Devel ) endif() # TODO: Remove once we depend on polkit-qt1 > 0.99.0 # core/polkitqt1-actiondescription.h from polkit currently fails when built with -pedantic string(REPLACE "--pedantic-errors" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REPLACE "-pedantic-errors" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REPLACE "--pedantic" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") string(REPLACE "-pedantic" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") include(ECMGeneratePriFile) ecm_generate_pri_file(BASE_NAME KAuthCore LIB_NAME KF5AuthCore DEPS "core KCoreAddons" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KAuth) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR}) ecm_generate_pri_file(BASE_NAME KAuth LIB_NAME KF5Auth DEPS "KAuthCore" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KAuth) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})