diff options
Diffstat (limited to 'meta-openembedded/meta-gnome/recipes-graphics/cogl')
3 files changed, 182 insertions, 0 deletions
diff --git a/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0.inc b/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0.inc new file mode 100644 index 000000000..d581ad1c0 --- /dev/null +++ b/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0.inc @@ -0,0 +1,84 @@ +SUMMARY = "Modern 3D graphics API with associated utility APIs" +DESCRIPTION = "Cogl is a small open source library for using 3D graphics \ +hardware for rendering. The API departs from the flat state machine style of \ +OpenGL and is designed to make it easy to write orthogonal components that \ +can render without stepping on each others toes." +HOMEPAGE = "https://gitlab.gnome.org/GNOME/cogl" +LICENSE = "MIT" + +inherit clutter features_check upstream-version-is-even gobject-introspection +# cogl-1.0 needs opengl to build +REQUIRED_DISTRO_FEATURES ?= "opengl" + +DEPENDS = "glib-2.0 gdk-pixbuf" +PACKAGES =+ "${PN}-examples \ + libcogl libcogl-gles2 libcogl-pango libcogl-path \ + " +AUTOTOOLS_AUXDIR = "${S}/build" + +# Extra DEPENDS for PACKAGECONFIG +EDEPENDS_GL = "virtual/libgl libdrm" +EDEPENDS_GLES2 = "virtual/libgles2" +EDEPENDS_KMS = "libdrm virtual/egl" +EDEPENDS_EGL = "virtual/egl" +EDEPENDS_X11 = "virtual/libx11 libxcomposite libxdamage libxfixes libxrandr" +EDEPENDS_WAYLAND = "virtual/egl virtual/libgles2 wayland" + +# Extra RDEPENDS for PACKAGECONFIG +# This has to be explictly listed, because cogl dlopens the backends +ERDEPENDS_GL = "libgl" +ERDEPENDS_GLES2 = "libgles2" + +# GLESv1 is rarely tested, so disable it +EXTRA_OECONF += "--enable-examples-install \ + --enable-debug \ + --disable-gles1 \ + --disable-cairo \ + " +DEBUG_OPTIMIZATION_append = " -Wno-error=maybe-uninitialized" + +# OpenGL/GLX +PACKAGECONFIG[glx] = "--enable-gl --enable-glx,--disable-gl --disable-glx,${EDEPENDS_GL} ${EDEPENDS_X11},${ERDEPENDS_GL}" + +# GLESv2 +PACKAGECONFIG[gles2] = "--enable-gles2,--disable-gles2,${EDEPENDS_GLES2}, ${ERDEPENDS_GLES2}" + +# EGL backends +PACKAGECONFIG[egl-kms] = "--enable-kms-egl-platform,--disable-kms-egl-platform,${EDEPENDS_KMS}" +PACKAGECONFIG[egl-null] = "--enable-null-egl-platform,--disable-null-egl-platform" +PACKAGECONFIG[egl-x11] = "--enable-xlib-egl-platform,--disable-xlib-egl-platform,${EDEPENDS_X11} ${EDEPENDS_EGL}" +PACKAGECONFIG[egl-wayland] = "--enable-wayland-egl-platform,--disable-wayland-egl-platform,${EDEPENDS_WAYLAND}" + +# Wayland (server-side) +PACKAGECONFIG[wayland-server] = "--enable-wayland-egl-server,--disable-wayland-egl-server,${EDEPENDS_WAYLAND}" + +# Support rendering text directly with Pango +PACKAGECONFIG[cogl-pango] = "--enable-cogl-pango,--disable-cogl-pango,pango" + +# Respect the DISTRO_FEATURES to pull in GLX or Wayland as appropriate by +# default. +PACKAGECONFIG ??= "cogl-pango gles2 \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'egl-wayland', '', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'glx egl-x11', '', d)} \ + " + +do_compile_prepend() { + export GIR_EXTRA_LIBS_PATH="${B}/cogl/.libs" +} + +FILES_${PN} = "" +FILES_${PN}-examples = "${bindir}/* ${datadir}/cogl/examples-data/*" +FILES_libcogl = "${libdir}/libcogl${SOLIBS} ${libdir}/girepository-1.0/Cogl-*.typelib" +FILES_libcogl-gles2 = "${libdir}/libcogl-gles2${SOLIBS}" +FILES_libcogl-pango = "${libdir}/libcogl-pango${SOLIBS} ${libdir}/girepository-1.0/CoglPango*.typelib" + +FILES_libcogl-path = "${libdir}/libcogl-path${SOLIBS}" + +# For backwards compatibility after Debian-renaming +RPROVIDES_libcogl = "cogl-1.0" +RCONFLICTS_libcogl = "cogl-1.0" +RREPLACES_libcogl = "cogl-1.0" + +RDEPENDS_${PN}-dev = "libcogl" + +COMPATIBLE_HOST_armv4 = 'null' diff --git a/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch b/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch new file mode 100644 index 000000000..328984a63 --- /dev/null +++ b/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0/0001-configure.ac-don-t-require-eglmesaext.h.patch @@ -0,0 +1,92 @@ +From bb9765a926588ebfe1eb324fbbe8fc22d419eebe Mon Sep 17 00:00:00 2001 +From: Max Krummenacher <max.krummenacher@toradex.com> +Date: Thu, 25 Jun 2020 11:27:40 +0000 +Subject: [PATCH] configure.ac: don't require eglmesaext.h + +E.g. the Vivante EGL implementation does not provide eglmesaext.h. + +The commit moves the check for header file existence outside of the +check for existence of a egl packageconfig and makes the existence +of eglmesaext.h optional. + +fixes commit fb1acfec ("Fix building against libglvnd-provided EGL headers") +Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> + +Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/cogl/-/merge_requests/28] +Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> +--- + configure.ac | 51 ++++++++++++++++++++++++++++++++------------------- + 1 file changed, 32 insertions(+), 19 deletions(-) + +diff --git a/configure.ac b/configure.ac +index b7ba95d..0d1d8de 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1212,22 +1212,6 @@ AS_IF([test "x$NEED_EGL" = "xyes" && test "x$EGL_CHECKED" != "xyes"], + PKG_CHECK_EXISTS([egl], + [COGL_PKG_REQUIRES="$COGL_PKG_REQUIRES egl"], + [ +- AC_CHECK_HEADERS( +- [EGL/egl.h], +- [], +- [AC_MSG_ERROR([Unable to locate required EGL headers])]) +- AC_CHECK_HEADERS( +- [EGL/eglext.h], +- [], +- [AC_MSG_ERROR([Unable to locate required EGL headers])], +- [#include <EGL/egl.h>]) +- AC_CHECK_HEADERS( +- [EGL/eglmesaext.h], +- [], +- [AC_MSG_ERROR([Unable to locate required EGL headers])], +- [#include <EGL/egl.h> +-#include <EGL/eglext.h>]) +- + AC_CHECK_LIB(EGL, [eglInitialize], + [COGL_EXTRA_LDFLAGS="$COGL_EXTRA_LDFLAGS -lEGL"], + [AC_MSG_ERROR([Unable to locate required EGL library])]) +@@ -1236,9 +1220,38 @@ AS_IF([test "x$NEED_EGL" = "xyes" && test "x$EGL_CHECKED" != "xyes"], + ] + ) + +- COGL_EGL_INCLUDES="#include <EGL/egl.h> +-#include <EGL/eglext.h> +-#include <EGL/eglmesaext.h>" ++dnl Test for the existence of egl headers. ++dnl egl*.h includes eglplatform.h which on __unix__ defaults to a X11 platform. ++dnl In that case AC_CHECK_HEADERS failes if X11 headers are not available. ++dnl Set the usual include guard define and, if the EGL implementation doesn't ++dnl use that guard fall back to USE_OZONE and EGL_NO_X11 platforms which don't ++dnl require additional headers. ++ AC_CHECK_HEADERS( ++ [EGL/egl.h], ++ [COGL_EGL_INCLUDES="#include <EGL/egl.h>"], ++ [AC_MSG_ERROR([Unable to locate required EGL headers])], ++ [#define __egl_h_ ++ #define USE_OZONE ++ #define EGL_NO_X11]) ++ AC_CHECK_HEADERS( ++ [EGL/eglext.h], ++ [COGL_EGL_INCLUDES="$COGL_EGL_INCLUDES ++#include <EGL/eglext.h>"], ++ [AC_MSG_ERROR([Unable to locate required EGL headers])], ++ [#define __eglext_h_ ++ #define USE_OZONE ++ #define EGL_NO_X11 ++$COGL_EGL_INCLUDES]) ++ AC_CHECK_HEADERS( ++ [EGL/eglmesaext.h], ++ [COGL_EGL_INCLUDES="$COGL_EGL_INCLUDES ++#include <EGL/eglmesaext.h>"], ++ [], ++ [#define __eglmesaext_h_ ++#define USE_OZONE ++#define EGL_NO_X11 ++$COGL_EGL_INCLUDES]) ++ + AC_SUBST([COGL_EGL_INCLUDES]) + ]) + +-- +2.20.1 + diff --git a/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0_1.22.8.bb b/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0_1.22.8.bb new file mode 100644 index 000000000..b9446fab3 --- /dev/null +++ b/meta-openembedded/meta-gnome/recipes-graphics/cogl/cogl-1.0_1.22.8.bb @@ -0,0 +1,6 @@ +require cogl-1.0.inc + +SRC_URI += "file://0001-configure.ac-don-t-require-eglmesaext.h.patch" +SRC_URI[archive.sha256sum] = "a805b2b019184710ff53d0496f9f0ce6dcca420c141a0f4f6fcc02131581d759" + +LIC_FILES_CHKSUM = "file://COPYING;md5=1b1a508d91d25ca607c83f92f3e31c84" |