diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-11-18 09:10:22 +0100 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-11-18 09:10:22 +0100 |
| commit | 615b731783311af2564573a98e59739a281f8f91 (patch) | |
| tree | e53c7aa105828792c5652ee1fed995f2c904c559 | |
| parent | 72415b534de36888e1a393847ec38544cdbbc3f7 (diff) | |
CMake+Wayland: check for presence of required software modules
Also, remove hardcoded path to wayland-protocols when
CMake version ≥ 3.4
| -rw-r--r-- | CMake/options.cmake | 17 | ||||
| -rw-r--r-- | 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 |
