From b409f523f01cad45c9b1f4068ffc9fcf9a72399b Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Tue, 2 Mar 2021 02:14:39 +0100 Subject: [PATCH] Revert "cmake: Get XKB information directly from PkgConfig" This reverts commit 3c97cecdb0dc402fc6edae959fb24e9922e77978. It seems to break on the CI and I don't understand why. --- CMakeLists.txt | 4 +- autotests/CMakeLists.txt | 2 +- cmake/modules/FindXKB.cmake | 89 +++++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 2 +- 4 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 cmake/modules/FindXKB.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fa4317ce9..50e6519cac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -185,7 +185,7 @@ if (Wayland_Egl_FOUND) set(HAVE_WAYLAND_EGL TRUE) endif() -pkg_check_modules(XKB IMPORTED_TARGET xkbcommon) +find_package(XKB 0.7.0) set_package_properties(XKB PROPERTIES TYPE REQUIRED PURPOSE "Required for building KWin with Wayland support" @@ -357,6 +357,8 @@ if (KWIN_BUILD_XRENDER_COMPOSITING) set(KWIN_HAVE_XRENDER_COMPOSITING 1) endif() +include_directories(${XKB_INCLUDE_DIR}) + set(HAVE_EPOXY_GLX ${epoxy_HAS_GLX}) # for kwin internal things diff --git a/autotests/CMakeLists.txt b/autotests/CMakeLists.txt index c4269a12a1..5cd5ef2eac 100644 --- a/autotests/CMakeLists.txt +++ b/autotests/CMakeLists.txt @@ -368,7 +368,7 @@ target_link_libraries(testXkb Plasma::KWaylandServer KF5::WindowSystem - PkgConfig::XKB + XKB::XKB ) add_test(NAME kwin-testXkb COMMAND testXkb) ecm_mark_as_test(testXkb) diff --git a/cmake/modules/FindXKB.cmake b/cmake/modules/FindXKB.cmake new file mode 100644 index 0000000000..cd9b9a98e2 --- /dev/null +++ b/cmake/modules/FindXKB.cmake @@ -0,0 +1,89 @@ +#.rst: +# FindXKB +# ------- +# +# Try to find xkbcommon on a Unix system +# If found, this will define the following variables: +# +# ``XKB_FOUND`` +# True if XKB is available +# ``XKB_LIBRARIES`` +# Link these to use XKB +# ``XKB_INCLUDE_DIRS`` +# Include directory for XKB +# ``XKB_DEFINITIONS`` +# Compiler flags for using XKB +# +# Additionally, the following imported targets will be defined: +# +# ``XKB::XKB`` +# The XKB library + +#============================================================================= +# SPDX-FileCopyrightText: 2014 Martin Gräßlin +# +# SPDX-License-Identifier: BSD-3-Clause +#============================================================================= + +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "CMake 2.8.12 is required by FindXKB.cmake") +endif() +if(CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.12) + message(AUTHOR_WARNING "Your project should require at least CMake 2.8.12 to use FindXKB.cmake") +endif() + +if(NOT WIN32) + # Use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + find_package(PkgConfig) + pkg_check_modules(PKG_XKB QUIET xkbcommon) + + set(XKB_DEFINITIONS ${PKG_XKB_CFLAGS_OTHER}) + + find_path(XKB_INCLUDE_DIR + NAMES + xkbcommon/xkbcommon.h + HINTS + ${PKG_XKB_INCLUDE_DIRS} + ) + find_library(XKB_LIBRARY + NAMES + xkbcommon + HINTS + ${PKG_XKB_LIBRARY_DIRS} + ) + + set(XKB_LIBRARIES ${XKB_LIBRARY}) + set(XKB_INCLUDE_DIRS ${XKB_INCLUDE_DIR}) + set(XKB_VERSION ${PKG_XKB_VERSION}) + + include(FindPackageHandleStandardArgs) + find_package_handle_standard_args(XKB + FOUND_VAR + XKB_FOUND + REQUIRED_VARS + XKB_LIBRARY + XKB_INCLUDE_DIR + VERSION_VAR + XKB_VERSION + ) + + if(XKB_FOUND AND NOT TARGET XKB::XKB) + add_library(XKB::XKB UNKNOWN IMPORTED) + set_target_properties(XKB::XKB PROPERTIES + IMPORTED_LOCATION "${XKB_LIBRARY}" + INTERFACE_COMPILE_OPTIONS "${XKB_DEFINITIONS}" + INTERFACE_INCLUDE_DIRECTORIES "${XKB_INCLUDE_DIR}" + ) + endif() + +else() + message(STATUS "FindXKB.cmake cannot find XKB on Windows systems.") + set(XKB_FOUND FALSE) +endif() + +include(FeatureSummary) +set_package_properties(XKB PROPERTIES + URL "https://xkbcommon.org" + DESCRIPTION "XKB API common to servers and clients." +) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ee120b12f7..febafc765e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -230,7 +230,7 @@ target_link_libraries(kwin Libinput::Libinput UDev::UDev - PkgConfig::XKB + XKB::XKB epoxy::epoxy ${CMAKE_THREAD_LIBS_INIT}