diff --git a/build/cmake/init.cmake b/build/cmake/init.cmake index 5487ad92cf..166b90412b 100644 --- a/build/cmake/init.cmake +++ b/build/cmake/init.cmake @@ -385,14 +385,21 @@ if(wxUSE_GUI) set(OPENGL_LIBRARIES "-framework OpenGLES" "-framework QuartzCore") else() find_package(OpenGL) - if(WXGTK3 AND OpenGL_EGL_FOUND) - set(wxUSE_GLCANVAS_EGL ON) + if(WXGTK3 AND OpenGL_EGL_FOUND AND wxUSE_GLCANVAS_EGL) + set(OPENGL_LIBRARIES OpenGL::OpenGL OpenGL::EGL) + find_package(WAYLANDEGL) + if(WAYLANDEGL_FOUND AND wxHAVE_GDK_WAYLAND) + list(APPEND OPENGL_LIBRARIES ${WAYLANDEGL_LIBRARIES}) + endif() endif() endif() if(NOT OPENGL_FOUND) message(WARNING "opengl not found, wxGLCanvas won't be available") wx_option_force_value(wxUSE_OPENGL OFF) endif() + if(UNIX AND NOT OpenGL_EGL_FOUND) + wx_option_force_value(wxUSE_GLCANVAS_EGL OFF) + endif() endif() if(wxUSE_WEBVIEW) diff --git a/build/cmake/modules/FindGTK3.cmake b/build/cmake/modules/FindGTK3.cmake index 9f62658d0f..5c35029a81 100644 --- a/build/cmake/modules/FindGTK3.cmake +++ b/build/cmake/modules/FindGTK3.cmake @@ -42,5 +42,9 @@ set(VERSION_OK FALSE) endif () endif () endif () +# Check for GDK Wayland support +include(CheckSymbolExists) +set(CMAKE_REQUIRED_INCLUDES ${GTK3_INCLUDE_DIRS}) +check_symbol_exists(GDK_WINDOWING_WAYLAND "gdk/gdk.h" wxHAVE_GDK_WAYLAND) include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK3 DEFAULT_MSG GTK3_INCLUDE_DIRS GTK3_LIBRARIES VERSION_OK) diff --git a/build/cmake/modules/FindWAYLANDEGL.cmake b/build/cmake/modules/FindWAYLANDEGL.cmake new file mode 100644 index 0000000000..6ca89ef560 --- /dev/null +++ b/build/cmake/modules/FindWAYLANDEGL.cmake @@ -0,0 +1,18 @@ +find_package(PkgConfig) +pkg_check_modules(WAYLANDEGL QUIET wayland-egl) + +set(VERSION_OK TRUE) +if (WAYLANDEGL_VERSION) + if (WAYLANDEGL_FIND_VERSION_EXACT) + if (NOT("${WAYLANDEGL_FIND_VERSION}" VERSION_EQUAL "${WAYLANDEGL_VERSION}")) + set(VERSION_OK FALSE) + endif () + else () + if ("${WAYLANDEGL_VERSION}" VERSION_LESS "${WAYLANDEGL_FIND_VERSION}") + set(VERSION_OK FALSE) + endif () + endif () +endif () + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(WAYLANDEGL DEFAULT_MSG WAYLANDEGL_LIBRARIES VERSION_OK) diff --git a/build/cmake/options.cmake b/build/cmake/options.cmake index deca75f467..5f0d2dca6d 100644 --- a/build/cmake/options.cmake +++ b/build/cmake/options.cmake @@ -109,6 +109,7 @@ if(UNIX) wx_option(wxUSE_XTEST "use XTest extension") wx_option(wxUSE_LIBMSPACK "use libmspack (CHM help files loading)") wx_option(wxUSE_LIBGNOMEVFS "use GNOME VFS for associating MIME types") + wx_option(wxUSE_GLCANVAS_EGL "use EGL backend for wxGLCanvas") set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_LIBSDL "use SDL for audio on Unix") set(wxTHIRD_PARTY_LIBRARIES ${wxTHIRD_PARTY_LIBRARIES} wxUSE_LIBMSPACK "use libmspack (CHM help files loading)")