CMake+Wayland: check for presence of required software modules

Also, remove hardcoded path to wayland-protocols when
CMake version ≥ 3.4
This commit is contained in:
ManoloFLTK 2022-11-18 09:10:22 +01:00
parent 72415b534d
commit 615b731783
2 changed files with 26 additions and 5 deletions

View File

@ -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)

View File

@ -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