[Mesa-dev] [PATCH v1] configure.ac: Missed package 'wayland-egl-backend'

Sergii Romantsov sergii.romantsov at gmail.com
Tue Jun 12 15:22:03 UTC 2018


Added support of wayland-egl-backend for old Ubuntus.
Building of mesa with parameter "--with-egl-platforms=x11,wayland"
fails:
"configure: error: Package requirements (wayland-egl-backend >= 3)
were not met: No package 'wayland-egl-backend' found"

Ubuntu's releases less than 18.10 don't have package
libwayland-egl-backend-dev.
To fix that issue used mesa-platfrom-header wayland-egl-backend.h.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106897
Signed-off-by: Sergii Romantsov <sergii.romantsov at globallogic.com>
---
 configure.ac                                      | 20 ++++++-
 src/egl/Makefile.am                               |  5 ++
 src/egl/wayland/wayland-egl/wayland-egl-backend.h | 67 +++++++++++++++++++++++
 3 files changed, 91 insertions(+), 1 deletion(-)
 create mode 100644 src/egl/wayland/wayland-egl/wayland-egl-backend.h

diff --git a/configure.ac b/configure.ac
index 75ee1a7..32b3c53 100644
--- a/configure.ac
+++ b/configure.ac
@@ -91,6 +91,7 @@ LIBVA_REQUIRED=0.39.0
 VDPAU_REQUIRED=1.1
 WAYLAND_REQUIRED=1.11
 WAYLAND_EGL_BACKEND_REQUIRED=3
+UBUNTU_WAYLAND_EGL_BACKEND_REQUIRED=18.10
 WAYLAND_PROTOCOLS_REQUIRED=1.8
 XCB_REQUIRED=1.9.3
 XCBDRI2_REQUIRED=1.8
@@ -1810,7 +1811,24 @@ for plat in $platforms; do
         PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED])
         PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
         if test "x$enable_egl" = xyes; then
-          PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl-backend >= $WAYLAND_EGL_BACKEND_REQUIRED])
+          case "$host_os" in
+          linux*)
+              AC_SUBST([DISTRIBUTOR_ID],[$( lsb_release -is )])
+              AC_SUBST([RELEASE_VERSION],[$( lsb_release -rs )])
+              ;;
+          *)
+              AC_SUBST([DISTRIBUTOR_ID])
+              AC_SUBST([RELEASE_VERSION])
+              ;;
+          esac
+
+          if test "$DISTRIBUTOR_ID" = "Ubuntu" -a  $RELEASE_VERSION \< $UBUNTU_WAYLAND_EGL_BACKEND_REQUIRED ; then
+              DEFINES="$DEFINES -DHAVE_PLATFORM_WAYLAND_BACKEND"
+              AM_CONDITIONAL([HAVE_PLATFORM_WAYLAND_BACKEND], [test "xyes" = xyes])
+          else
+              PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl-backend >= $WAYLAND_EGL_BACKEND_REQUIRED])
+              AM_CONDITIONAL([HAVE_PLATFORM_WAYLAND_BACKEND], [test "xyes" != xyes])
+          fi
         fi
         WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
 
diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am
index be3547d..0ef0a42 100644
--- a/src/egl/Makefile.am
+++ b/src/egl/Makefile.am
@@ -121,6 +121,11 @@ AM_CFLAGS += \
 	-DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" \
 	-D_EGL_BUILT_IN_DRIVER_DRI2
 
+if HAVE_PLATFORM_WAYLAND_BACKEND
+AM_CFLAGS += \
+	-I$(top_srcdir)/src/egl/wayland/wayland-egl
+endif
+
 nodist_libEGL_common_la_SOURCES = \
 	$(dri2_backend_GENERATED_FILES)
 
diff --git a/src/egl/wayland/wayland-egl/wayland-egl-backend.h b/src/egl/wayland/wayland-egl/wayland-egl-backend.h
new file mode 100644
index 0000000..869c86f
--- /dev/null
+++ b/src/egl/wayland/wayland-egl/wayland-egl-backend.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright © 2011 Benjamin Franzke
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *    Benjamin Franzke <benjaminfranzke at googlemail.com>
+ */
+
+#ifndef _WAYLAND_EGL_PRIV_H
+#define _WAYLAND_EGL_PRIV_H
+
+#include <stdint.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/*
+ * NOTE: This version must be kept in sync with the Version field in the
+ * wayland-egl-backend.pc.in file.
+ */
+#define WL_EGL_WINDOW_VERSION 3
+
+struct wl_surface;
+
+struct wl_egl_window {
+	const intptr_t version;
+
+	int width;
+	int height;
+	int dx;
+	int dy;
+
+	int attached_width;
+	int attached_height;
+
+	void *driver_private;
+	void (*resize_callback)(struct wl_egl_window *, void *);
+	void (*destroy_window_callback)(void *);
+
+	struct wl_surface *surface;
+};
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif
-- 
2.7.4



More information about the mesa-dev mailing list