meta-tizen: mesa: add version 10.3.4
authorSaul Wold <sgw@linux.intel.com>
Tue, 23 Dec 2014 15:53:25 +0000 (07:53 -0800)
committerPatrick Ohly <patrick.ohly@intel.com>
Fri, 9 Jan 2015 17:23:57 +0000 (09:23 -0800)
Change-Id: I1de91edc4db2e37b3bd4313a46af36a28db1275f
(From meta-tizen rev: 7ff50a79fe20018d9183a4e202f853230ac204a4)

Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa-gl_10.3.4.bb [new file with mode: 0644]
meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa.inc [new file with mode: 0644]
meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/configure-pipe-loader.patch [new file with mode: 0644]
meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/gallium-targets-dri-allow-multiple-definition-xmlconfig.patch [new file with mode: 0644]
meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/mesa-use-shared-pipe-drivers.patch [new file with mode: 0644]
meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa_10.3.4.bb [new file with mode: 0644]

diff --git a/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa-gl_10.3.4.bb b/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa-gl_10.3.4.bb
new file mode 100644 (file)
index 0000000..2acc21d
--- /dev/null
@@ -0,0 +1,11 @@
+require mesa_${PV}.bb
+
+SUMMARY += " (OpenGL only, no EGL/GLES)"
+
+FILESEXTRAPATHS =. "${FILE_DIRNAME}/mesa:"
+
+PROVIDES = "virtual/libgl virtual/mesa"
+
+PACKAGECONFIG ??= "dri ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa.inc b/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa.inc
new file mode 100644 (file)
index 0000000..1857f3c
--- /dev/null
@@ -0,0 +1,189 @@
+SUMMARY = "A free implementation of the OpenGL API"
+DESCRIPTION = "Mesa is an open-source implementation of the OpenGL specification - \
+a system for rendering interactive 3D graphics.  \
+A variety of device drivers allows Mesa to be used in many different environments \
+ranging from software emulation to complete hardware acceleration for modern GPUs. \
+Mesa is used as part of the overall Direct Rendering Infrastructure and X.org \
+environment."
+
+HOMEPAGE = "http://mesa3d.org"
+BUGTRACKER = "https://bugs.freedesktop.org"
+SECTION = "x11"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://docs/license.html;md5=6a23445982a7a972ac198e93cc1cb3de"
+
+PE = "2"
+
+DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native udev"
+
+PROVIDES = "virtual/libgl virtual/libgles1 virtual/libgles2 virtual/egl virtual/mesa"
+
+inherit autotools pkgconfig pythonnative gettext distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+EXTRA_OECONF = "--enable-shared-glapi"
+
+PACKAGECONFIG ??= "egl gles dri \
+               ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}\
+               ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'wayland', '', d)}\
+               "
+
+X11_DEPS = "xf86driproto glproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes"
+PACKAGECONFIG[x11] = "--enable-glx-tls,--disable-glx,${X11_DEPS}"
+PACKAGECONFIG[xvmc] = "--enable-xvmc,--disable-xvmc,libxvmc"
+PACKAGECONFIG[wayland] = ",,wayland"
+
+DRIDRIVERS = "swrast"
+DRIDRIVERS_append_x86 = ",radeon,r200,nouveau,i965,i915"
+DRIDRIVERS_append_x86-64 = ",radeon,r200,nouveau,i965,i915"
+PACKAGECONFIG[dri] = "--enable-dri --with-dri-drivers=${DRIDRIVERS}, --disable-dri, dri2proto libdrm"
+PACKAGECONFIG[dri3] = "--enable-dri3, --disable-dri3, dri3proto presentproto libxshmfence"
+
+EXTRA_OECONF += "--enable-gbm"
+
+PACKAGECONFIG[gles] = "--enable-gles1 --enable-gles2, --disable-gles1 --disable-gles2"
+
+EGL_PLATFORMS  = "drm"
+EGL_PLATFORMS .="${@bb.utils.contains('PACKAGECONFIG', 'x11', ',x11', '', d)}"
+EGL_PLATFORMS .="${@bb.utils.contains('PACKAGECONFIG', 'wayland', ',wayland', '', d)}"
+PACKAGECONFIG[egl] = "--enable-egl --with-egl-platforms=${EGL_PLATFORMS}, --disable-egl"
+
+PACKAGECONFIG[openvg] = "--enable-openvg, --disable-openvg"
+
+GALLIUMDRIVERS = "swrast"
+GALLIUMDRIVERS_LLVM33 = "${@bb.utils.contains('PACKAGECONFIG', 'r600', 'radeonsi,r600', '', d)}"
+GALLIUMDRIVERS_LLVM33_ENABLED = "${@base_version_less_or_equal('MESA_LLVM_RELEASE', '3.2', False, len('${GALLIUMDRIVERS_LLVM33}') > 0, d)}"
+GALLIUMDRIVERS_LLVM = "r300,svga,nouveau${@',${GALLIUMDRIVERS_LLVM33}' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}"
+GALLIUMDRIVERS_append_x86 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
+GALLIUMDRIVERS_append_x86-64 = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',${GALLIUMDRIVERS_LLVM}', '', d)}"
+# keep --with-gallium-drivers separate, because when only one of gallium versions is enabled, other 2 were adding --without-gallium-drivers
+PACKAGECONFIG[gallium]      = "--with-gallium-drivers=${GALLIUMDRIVERS}, --without-gallium-drivers"
+PACKAGECONFIG[gallium-egl]  = "--enable-gallium-egl, --disable-gallium-egl"
+PACKAGECONFIG[gallium-gbm]  = "--enable-gallium-gbm, --disable-gallium-gbm"
+MESA_LLVM_RELEASE ?= "3.3"
+PACKAGECONFIG[gallium-llvm] = "--enable-gallium-llvm --with-llvm-shared-libs, --disable-gallium-llvm, llvm${MESA_LLVM_RELEASE} \
+                               ${@'elfutils' if ${GALLIUMDRIVERS_LLVM33_ENABLED} else ''}"
+export WANT_LLVM_RELEASE = "${MESA_LLVM_RELEASE}"
+
+# llvmpipe is slow if compiled with -fomit-frame-pointer (e.g. -O2)
+FULL_OPTIMIZATION_append = " -fno-omit-frame-pointer"
+
+# Multiple virtual/gl providers being built breaks staging
+EXCLUDE_FROM_WORLD = "1"
+
+# Remove the mesa dependency on mesa-dev, as mesa is empty
+RDEPENDS_${PN}-dev = ""
+
+PACKAGES =+ "libegl-mesa libegl-mesa-dev \
+             libosmesa libosmesa-dev \
+             libgl-mesa libgl-mesa-dev \
+             libglapi libglapi-dev \
+             libgbm libgbm-dev \
+             libgles1-mesa libgles1-mesa-dev \
+             libgles2-mesa libgles2-mesa-dev \
+             libgles3-mesa libgles3-mesa-dev \
+             libwayland-egl libwayland-egl-dev \
+             libegl-gallium libgbm-gallium \
+             libopenvg libopenvg-dev \
+             libxvmcsoftpipe libxvmcsoftpipe-dev \
+             mesa-megadriver \
+            "
+
+do_install_append () {
+    # Drivers never need libtool .la files
+    rm -f ${D}${libdir}/dri/*.la
+    rm -f ${D}${libdir}/egl/*.la
+    rm -f ${D}${libdir}/gallium-pipe/*.la
+    rm -f ${D}${libdir}/gbm/*.la
+    
+    # it was packaged in libdricore9.1.3-1 and preventing upgrades when debian.bbclass was used 
+    rm -f ${D}${sysconfdir}/drirc
+}
+
+# For the packages that make up the OpenGL interfaces, inject variables so that
+# they don't get Debian-renamed (which would remove the -mesa suffix), and
+# RPROVIDEs/RCONFLICTs on the generic libgl name.
+python __anonymous() {
+    pkgconfig = (d.getVar('PACKAGECONFIG', True) or "").split()
+    for p in (("egl", "libegl", "libegl1"),
+              ("dri", "libgl", "libgl1"),
+              ("gles", "libgles1", "libglesv1-cm1"),
+              ("gles", "libgles2", "libglesv2-2"),
+              ("gles", "libgles3",)):
+        if not p[0] in pkgconfig:
+            continue
+        fullp = p[1] + "-mesa"
+        pkgs = " ".join(p[1:])
+        d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
+        d.appendVar("RREPLACES_" + fullp, pkgs)
+        d.appendVar("RPROVIDES_" + fullp, pkgs)
+        d.appendVar("RCONFLICTS_" + fullp, pkgs)
+        
+        # For -dev, the first element is both the Debian and original name
+        fullp += "-dev"
+        pkgs = p[1] + "-dev"
+        d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1")
+        d.appendVar("RREPLACES_" + fullp, pkgs)
+        d.appendVar("RPROVIDES_" + fullp, pkgs)
+        d.appendVar("RCONFLICTS_" + fullp, pkgs)
+}
+
+python mesa_populate_packages() {
+    pkgs = ['mesa', 'mesa-dev', 'mesa-dbg']
+    for pkg in pkgs:
+        d.setVar("RPROVIDES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+        d.setVar("RCONFLICTS_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+        d.setVar("RREPLACES_%s" % pkg, pkg.replace("mesa", "mesa-dri", 1))
+
+    import re
+    dri_drivers_root = os.path.join(d.getVar('libdir', True), "dri")
+    dri_pkgs = os.listdir(d.getVar('PKGD', True) + dri_drivers_root)
+    lib_name = d.expand("${MLPREFIX}mesa-megadriver")
+    for p in dri_pkgs:
+        m = re.match('^(.*)_dri\.so$', p)
+        if m:
+            pkg_name = " ${MLPREFIX}mesa-driver-%s" % legitimize_package_name(m.group(1))
+            d.appendVar("RPROVIDES_%s" % lib_name, pkg_name)
+            d.appendVar("RCONFLICTS_%s" % lib_name, pkg_name)
+            d.appendVar("RREPLACES_%s" % lib_name, pkg_name)
+
+    pipe_drivers_root = os.path.join(d.getVar('libdir', True), "gallium-pipe")
+    do_split_packages(d, pipe_drivers_root, '^pipe_(.*)\.so$', 'mesa-driver-pipe-%s', 'Mesa %s pipe driver', extra_depends='')
+}
+
+PACKAGESPLITFUNCS_prepend = "mesa_populate_packages "
+
+PACKAGES_DYNAMIC += "^mesa-driver-.*"
+
+FILES_${PN}-dbg += "${libdir}/dri/.debug/*"
+FILES_${PN} += "${sysconfdir}/drirc"
+FILES_mesa-megadriver = "${libdir}/dri/*"
+FILES_libegl-mesa = "${libdir}/libEGL.so.*"
+FILES_libgbm = "${libdir}/libgbm.so.*"
+FILES_libgles1-mesa = "${libdir}/libGLESv1*.so.*"
+FILES_libgles2-mesa = "${libdir}/libGLESv2.so.*"
+FILES_libgl-mesa = "${libdir}/libGL.so.*"
+FILES_libglapi = "${libdir}/libglapi.so.*"
+FILES_libosmesa = "${libdir}/libOSMesa.so.*"
+FILES_libwayland-egl = "${libdir}/libwayland-egl.so.*"
+FILES_libegl-gallium = "${libdir}/egl/egl_gallium.so*"
+FILES_libgbm-gallium = "${libdir}/gbm/gbm_gallium_drm.so*"
+FILES_libopenvg = "${libdir}/libOpenVG.so.*"
+FILES_libxvmcsoftpipe = "${libdir}/libXvMCsoftpipe.so.*"
+
+FILES_${PN}-dev = "${libdir}/pkgconfig/dri.pc"
+FILES_libegl-mesa-dev = "${libdir}/libEGL.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
+FILES_libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h"
+FILES_libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc"
+FILES_libglapi-dev = "${libdir}/libglapi.*"
+FILES_libgles1-mesa-dev = "${libdir}/libGLESv1*.* ${includedir}/GLES ${libdir}/pkgconfig/glesv1*.pc"
+FILES_libgles2-mesa-dev = "${libdir}/libGLESv2.* ${includedir}/GLES2 ${libdir}/pkgconfig/glesv2.pc"
+FILES_libgles3-mesa-dev = "${includedir}/GLES3"
+FILES_libosmesa-dev = "${libdir}/libOSMesa.* ${includedir}/osmesa.h ${libdir}/pkgconfig/osmesa.pc"
+FILES_libwayland-egl-dev = "${libdir}/pkgconfig/wayland-egl.pc ${libdir}/libwayland-egl.*"
+FILES_libopenvg-dev = "${libdir}/libOpenVG.so ${libdir}/libOpenVG.la* \
+                       ${includedir}/VG ${libdir}/pkgconfig/vg.pc"
+FILES_libxvmcsoftpipe-dev = "${libdir}/libXvMCsoftpipe.so ${libdir}/libXvMCsoftpipe.la"
+
+FILES_${PN}-dbg += "${libdir}/dri/.debug/* ${libdir}/egl/.debug/* ${libdir}/gbm/.debug/* ${libdir}/gallium-pipe/.debug"
diff --git a/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/configure-pipe-loader.patch b/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/configure-pipe-loader.patch
new file mode 100644 (file)
index 0000000..ab9b968
--- /dev/null
@@ -0,0 +1,30 @@
+configure.ac: Enable built of gallium pipe-loader shared libraries.
+
+Since mesa 10.3.x disables pipe-loader shared libraries creation it is needed
+to enable in configure.ac.
+
+Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
+
+Upstream-Status: Inappropriate [Configuration]
+
+diff --git a/configure.ac b/configure.ac
+index 1a1c0a9..9b00b5d 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -832,7 +832,7 @@ AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "x$enable_shared_glapi" = xyes)
+ # Build the pipe-drivers as separate libraries/modules.
+ # Do not touch this unless you know what you are doing.
+ # XXX: Expose via configure option ?
+-enable_shared_pipe_drivers=no
++enable_shared_pipe_drivers=yes
+ dnl
+ dnl Driver specific build directories
+@@ -1996,6 +1996,7 @@ if test -n "$with_gallium_drivers"; then
+         xswrast)
+             HAVE_GALLIUM_SOFTPIPE=yes
+             GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS softpipe"
++            gallium_require_drm_loader
+             if test "x$MESA_LLVM" = x1; then
+                 HAVE_GALLIUM_LLVMPIPE=yes
+                 GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
diff --git a/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/gallium-targets-dri-allow-multiple-definition-xmlconfig.patch b/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/gallium-targets-dri-allow-multiple-definition-xmlconfig.patch
new file mode 100644 (file)
index 0000000..a516393
--- /dev/null
@@ -0,0 +1,30 @@
+src/gallium/targets/dri/Makefile.am: Workaround for fix xmlconfig.c duplicat
+    
+When build with enable_shared_pipe_drivers=yes in configure.ac result in fai
+because xmlconfig.c is compiled in two different static libraries.
+
+Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com>
+
+Upstream status: Pending
+
+diff --git a/src/gallium/targets/dri/Makefile.am b/src/gallium/targets/dri/Makefile.am
+index 1c33a91..3a8340b 100644
+--- a/src/gallium/targets/dri/Makefile.am
++++ b/src/gallium/targets/dri/Makefile.am
+@@ -53,14 +53,14 @@ gallium_dri_la_LIBADD = \
+       $(LIBDRM_LIBS) \
+       $(GALLIUM_COMMON_LIB_DEPS)
+-if HAVE_GALLIUM_STATIC_TARGETS
+-
+ # XXX: Temporary allow duplicated symbols, as the loader pulls in xmlconfig.c
+ # which already provides driParse* and driQuery* amongst others.
+ # Remove this hack as we come up with a cleaner solution.
+ gallium_dri_la_LDFLAGS += \
+       -Wl,--allow-multiple-definition
++if HAVE_GALLIUM_STATIC_TARGETS
++
+ MEGADRIVERS =
+ STATIC_TARGET_CPPFLAGS =
+ STATIC_TARGET_LIB_DEPS = \
diff --git a/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/mesa-use-shared-pipe-drivers.patch b/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa/mesa-use-shared-pipe-drivers.patch
new file mode 100644 (file)
index 0000000..629ce44
--- /dev/null
@@ -0,0 +1,13 @@
+Index: Mesa-10.3.4/configure.ac
+===================================================================
+--- Mesa-10.3.4.orig/configure.ac
++++ Mesa-10.3.4/configure.ac
+@@ -832,7 +832,7 @@ AM_CONDITIONAL(HAVE_SHARED_GLAPI, test "
+ # Build the pipe-drivers as separate libraries/modules.
+ # Do not touch this unless you know what you are doing.
+ # XXX: Expose via configure option ?
+-enable_shared_pipe_drivers=no
++enable_shared_pipe_drivers=yes
+ dnl
+ dnl Driver specific build directories
diff --git a/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa_10.3.4.bb b/meta-tizen/meta-tizen-adaptation/meta/recipes-graphics/mesa/mesa_10.3.4.bb
new file mode 100644 (file)
index 0000000..7421c53
--- /dev/null
@@ -0,0 +1,19 @@
+require ${BPN}.inc
+
+SRC_URI = "ftp://ftp.freedesktop.org/pub/mesa/${PV}/MesaLib-${PV}.tar.bz2 \
+           file://configure-pipe-loader.patch \
+           file://gallium-targets-dri-allow-multiple-definition-xmlconfig.patch \
+          "
+
+SRC_URI[md5sum] = "fa0558a3d02c2bb8c208c030ccdc992e"
+SRC_URI[sha256sum] = "e6373913142338d10515daf619d659433bfd2989988198930c13b0945a15e98a"
+
+S = "${WORKDIR}/Mesa-${PV}"
+
+#because we cannot rely on the fact that all apps will use pkgconfig,
+#make eglplatform.h independent of MESA_EGL_NO_X11_HEADER
+do_install_append() {
+    if ${@bb.utils.contains('PACKAGECONFIG', 'egl', 'true', 'false', d)}; then
+        sed -i -e 's/^#ifdef MESA_EGL_NO_X11_HEADERS/#if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '0', '1', d)}/' ${D}${includedir}/EGL/eglplatform.h
+    fi
+}