| From 2747e47393cbca2d09db56223e735bd94b21e2eb Mon Sep 17 00:00:00 2001 |
| From: Joel Winarske <joel.winarske@gmail.com> |
| Date: Mon, 28 Sep 2020 22:23:02 -0700 |
| Subject: [PATCH] Wayland: Remove extra-cmake-modules dependency |
| |
| Fixes #1774. |
| |
| [Retrieved (and backported) from: |
| https://github.com/glfw/glfw/commit/2747e47393cbca2d09db56223e735bd94b21e2eb] |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| --- |
| .gitignore | 4 --- |
| CMakeLists.txt | 16 ++++++------ |
| src/CMakeLists.txt | 62 ++++++++++++++++++++++++++++------------------ |
| 3 files changed, 45 insertions(+), 37 deletions(-) |
| |
| diff --git a/CMakeLists.txt b/CMakeLists.txt |
| index 42bfa1806d..394827520b 100644 |
| --- a/CMakeLists.txt |
| +++ b/CMakeLists.txt |
| @@ -191,20 +191,18 @@ endif() |
| # Use Wayland for window creation |
| #-------------------------------------------------------------------- |
| if (_GLFW_WAYLAND) |
| - find_package(ECM REQUIRED NO_MODULE) |
| - list(APPEND CMAKE_MODULE_PATH "${ECM_MODULE_PATH}") |
| |
| - find_package(Wayland REQUIRED Client Cursor Egl) |
| - find_package(WaylandScanner REQUIRED) |
| - find_package(WaylandProtocols 1.15 REQUIRED) |
| + include(FindPkgConfig) |
| + pkg_check_modules(Wayland REQUIRED |
| + wayland-client>=0.2.7 |
| + wayland-cursor>=0.2.7 |
| + wayland-egl>=0.2.7 |
| + xkbcommon) |
| |
| list(APPEND glfw_PKG_DEPS "wayland-client") |
| |
| list(APPEND glfw_INCLUDE_DIRS "${Wayland_INCLUDE_DIRS}") |
| - list(APPEND glfw_LIBRARIES "${Wayland_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT}") |
| - |
| - find_package(XKBCommon REQUIRED) |
| - list(APPEND glfw_INCLUDE_DIRS "${XKBCOMMON_INCLUDE_DIRS}") |
| + list(APPEND glfw_LIBRARIES "${Wayland_LINK_LIBRARIES}" "${CMAKE_THREAD_LIBS_INIT}") |
| |
| include(CheckIncludeFiles) |
| include(CheckFunctionExists) |
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt |
| index 2f2bdd883d..e834506c6c 100644 |
| --- a/src/CMakeLists.txt |
| +++ b/src/CMakeLists.txt |
| @@ -45,30 +45,44 @@ if (_GLFW_X11 OR _GLFW_WAYLAND) |
| posix_time.c posix_thread.c xkb_unicode.c |
| egl_context.c osmesa_context.c) |
| |
| - ecm_add_wayland_client_protocol(glfw_SOURCES |
| - PROTOCOL |
| - "${WAYLAND_PROTOCOLS_PKGDATADIR}/stable/xdg-shell/xdg-shell.xml" |
| - BASENAME xdg-shell) |
| - ecm_add_wayland_client_protocol(glfw_SOURCES |
| - PROTOCOL |
| - "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml" |
| - BASENAME xdg-decoration) |
| - ecm_add_wayland_client_protocol(glfw_SOURCES |
| - PROTOCOL |
| - "${WAYLAND_PROTOCOLS_PKGDATADIR}/stable/viewporter/viewporter.xml" |
| - BASENAME viewporter) |
| - ecm_add_wayland_client_protocol(glfw_SOURCES |
| - PROTOCOL |
| - "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/relative-pointer/relative-pointer-unstable-v1.xml" |
| - BASENAME relative-pointer-unstable-v1) |
| - ecm_add_wayland_client_protocol(glfw_SOURCES |
| - PROTOCOL |
| - "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml" |
| - BASENAME pointer-constraints-unstable-v1) |
| - ecm_add_wayland_client_protocol(glfw_SOURCES |
| - PROTOCOL |
| - "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml" |
| - BASENAME idle-inhibit-unstable-v1) |
| + find_program(WAYLAND_SCANNER_EXECUTABLE NAMES wayland-scanner) |
| + pkg_check_modules(WAYLAND_PROTOCOLS REQUIRED wayland-protocols>=1.15) |
| + pkg_get_variable(WAYLAND_PROTOCOLS_BASE wayland-protocols pkgdatadir) |
| + |
| + macro(wayland_generate protocol_file output_file) |
| + add_custom_command(OUTPUT ${output_file}.h |
| + COMMAND ${WAYLAND_SCANNER_EXECUTABLE} client-header |
| + < ${protocol_file} > ${output_file}.h |
| + DEPENDS ${protocol_file}) |
| + list(APPEND glfw_SOURCES ${output_file}.h) |
| + |
| + add_custom_command(OUTPUT ${output_file}.c |
| + COMMAND ${WAYLAND_SCANNER_EXECUTABLE} private-code |
| + < ${protocol_file} > ${output_file}.c |
| + DEPENDS ${protocol_file}) |
| + list(APPEND glfw_SOURCES ${output_file}.c) |
| + endmacro() |
| + |
| + set(GLFW_WAYLAND_PROTOCOL_SOURCES) |
| + wayland_generate( |
| + ${WAYLAND_PROTOCOLS_BASE}/stable/xdg-shell/xdg-shell.xml |
| + ${CMAKE_BINARY_DIR}/src/wayland-xdg-shell-client-protocol) |
| + wayland_generate( |
| + ${WAYLAND_PROTOCOLS_BASE}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml |
| + ${CMAKE_BINARY_DIR}/src/wayland-xdg-decoration-client-protocol) |
| + wayland_generate( |
| + ${WAYLAND_PROTOCOLS_BASE}/stable/viewporter/viewporter.xml |
| + ${CMAKE_BINARY_DIR}/src/wayland-viewporter-client-protocol) |
| + wayland_generate( |
| + ${WAYLAND_PROTOCOLS_BASE}/unstable/relative-pointer/relative-pointer-unstable-v1.xml |
| + ${CMAKE_BINARY_DIR}/src/wayland-relative-pointer-unstable-v1-client-protocol) |
| + wayland_generate( |
| + ${WAYLAND_PROTOCOLS_BASE}/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml |
| + ${CMAKE_BINARY_DIR}/src/wayland-pointer-constraints-unstable-v1-client-protocol) |
| + wayland_generate( |
| + ${WAYLAND_PROTOCOLS_BASE}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml |
| + ${CMAKE_BINARY_DIR}/src/wayland-idle-inhibit-unstable-v1-client-protocol) |
| + |
| elseif (_GLFW_OSMESA) |
| set(glfw_HEADERS ${common_HEADERS} null_platform.h null_joystick.h |
| posix_time.h posix_thread.h osmesa_context.h) |