From 615b731783311af2564573a98e59739a281f8f91 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Fri, 18 Nov 2022 09:10:22 +0100 Subject: CMake+Wayland: check for presence of required software modules MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also, remove hardcoded path to wayland-protocols when CMake version ≥ 3.4 --- CMake/options.cmake | 17 +++++++++++++++++ src/CMakeLists.txt | 14 +++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/CMake/options.cmake b/CMake/options.cmake index b56ed77af..8805263c0 100644 --- a/CMake/options.cmake +++ b/CMake/options.cmake @@ -196,6 +196,16 @@ if (UNIX) list (APPEND FLTK_LDLIBS -lm) option (OPTION_USE_WAYLAND "support Wayland and X11 backends" OFF) if (OPTION_USE_WAYLAND) + pkg_check_modules(WLDCLIENT wayland-client) + pkg_check_modules(WLDCURSOR wayland-cursor) + pkg_check_modules(WLDPROTO wayland-protocols) + pkg_check_modules(XKBCOMMON xkbcommon) + pkg_check_modules(DBUS dbus-1) + if (NOT(DBUS_FOUND AND WLDCLIENT_FOUND AND WLDCURSOR_FOUND AND WLDPROTO_FOUND AND XKBCOMMON_FOUND)) + message (STATUS "Not all software modules 'wayland-client wayland-cursor wayland-protocols xkbcommon dbus-1' are present") + message (STATUS "Consequently, building for the Wayland backend is not possible.") + message (FATAL_ERROR "*** Aborting ***") + endif (NOT(DBUS_FOUND AND WLDCLIENT_FOUND AND WLDCURSOR_FOUND AND WLDPROTO_FOUND AND XKBCOMMON_FOUND)) option (OPTION_WAYLAND_ONLY "support Wayland backend only" OFF) set (FLTK_USE_WAYLAND 1) if (NOT OPTION_WAYLAND_ONLY) @@ -409,6 +419,13 @@ if (HAVE_GL) endif (HAVE_GL) if (OPTION_USE_GL) + if (OPTION_USE_WAYLAND) + pkg_check_modules(WLDEGL wayland-egl) + if (NOT WLDEGL_FOUND) + message (STATUS "Module 'wayland-egl' is required to build for the Wayland backend.") + message (FATAL_ERROR "*** Aborting ***") + endif (NOT WLDEGL_FOUND) + endif (OPTION_USE_WAYLAND) if (OPTION_APPLE_X11) set (OPENGL_FOUND TRUE) find_library(OPENGL_LIB GL) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index edb3f54c0..b8b773d53 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -624,11 +624,15 @@ if (USE_XFT) endif (USE_XFT) if (UNIX AND OPTION_USE_WAYLAND) - if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "FreeBSD") - set(PROTOCOLS /usr/local/share/wayland-protocols) - else () - set(PROTOCOLS /usr/share/wayland-protocols) - endif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "FreeBSD") + if (NOT (CMAKE_VERSION VERSION_LESS 3.4)) + pkg_get_variable(PROTOCOLS wayland-protocols pkgdatadir) # requires cmake 3.4 + else() + if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "FreeBSD") + set(PROTOCOLS /usr/local/share/wayland-protocols) + else () + set(PROTOCOLS /usr/share/wayland-protocols) + endif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "FreeBSD") + endif (NOT (CMAKE_VERSION VERSION_LESS 3.4)) add_custom_command( OUTPUT xdg-shell-protocol.c xdg-shell-client-protocol.h COMMAND wayland-scanner private-code ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml xdg-shell-protocol.c -- cgit v1.2.3