From 62c7af68613539144ce045f60e100f2df8321bce Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Sat, 8 Feb 2020 18:01:56 +0000 Subject: [PATCH] check available Wayland protocols --- CMakeLists.txt | 2 +- src/CMakeLists.txt | 43 +++++++++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 80dbc13a5..74a3d7c09 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,7 +233,7 @@ if (_GLFW_WAYLAND) find_package(Wayland REQUIRED Client Cursor Egl) find_package(WaylandScanner REQUIRED) - find_package(WaylandProtocols 1.15 REQUIRED) + find_package(WaylandProtocols 1.12 REQUIRED) list(APPEND glfw_PKG_DEPS "wayland-client") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3fb2a54ea..6cc7d52fd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -45,30 +45,37 @@ if (_GLFW_X11 OR _GLFW_WAYLAND) endif() if (_GLFW_WAYLAND) - ecm_add_wayland_client_protocol(GLFW_WAYLAND_PROTOCOL_SOURCES - PROTOCOL + set(PROTO_DEF "${WAYLAND_PROTOCOLS_PKGDATADIR}/stable/xdg-shell/xdg-shell.xml" - BASENAME xdg-shell) - ecm_add_wayland_client_protocol(GLFW_WAYLAND_PROTOCOL_SOURCES - PROTOCOL "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml" - BASENAME xdg-decoration) - ecm_add_wayland_client_protocol(GLFW_WAYLAND_PROTOCOL_SOURCES - PROTOCOL "${WAYLAND_PROTOCOLS_PKGDATADIR}/stable/viewporter/viewporter.xml" - BASENAME viewporter) - ecm_add_wayland_client_protocol(GLFW_WAYLAND_PROTOCOL_SOURCES - PROTOCOL "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/relative-pointer/relative-pointer-unstable-v1.xml" - BASENAME relative-pointer-unstable-v1) - ecm_add_wayland_client_protocol(GLFW_WAYLAND_PROTOCOL_SOURCES - PROTOCOL "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml" - BASENAME pointer-constraints-unstable-v1) - ecm_add_wayland_client_protocol(GLFW_WAYLAND_PROTOCOL_SOURCES - PROTOCOL "${WAYLAND_PROTOCOLS_PKGDATADIR}/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml" - BASENAME idle-inhibit-unstable-v1) + ) + set(PROTO_NAME + xdg-shell + xdg-decoration + viewporter + relative-pointer-unstable-v1 + pointer-constraints-unstable-v1 + idle-inhibit-unstable-v1 + ) + + list(LENGTH PROTO_NAME count) + math(EXPR count "${count}-1") + foreach(i RANGE ${count}) + list(GET PROTO_DEF ${i} def) + list(GET PROTO_NAME ${i} name) + if(EXISTS ${def}) + ecm_add_wayland_client_protocol(GLFW_WAYLAND_PROTOCOL_SOURCES + PROTOCOL ${def} BASENAME ${name}) + string(REPLACE "-" "_" nameR ${name}) + add_definitions(-DHAS_PROTO_${nameR}) + else() + message(WARNING "protocol definition ${def} not available") + endif() + endforeach() target_sources(glfw PRIVATE ${GLFW_WAYLAND_PROTOCOL_SOURCES}) endif()