[meta-xilinx] [meta-xilinx-bsp][PATCH v2] libmali-xlnx.bb: Add recipe to support MALI 400 binaries
Manjukumar Harthikote Matha
MANJUKUM at xilinx.com
Mon Jun 25 17:31:50 PDT 2018
Applied
Thanks,
Manju
> -----Original Message-----
> From: Manjukumar Matha [mailto:manjukumar.harthikote-matha at xilinx.com]
> Sent: Thursday, June 21, 2018 8:53 AM
> To: meta-xilinx at yoctoproject.org
> Cc: Manjukumar Harthikote Matha <MANJUKUM at xilinx.com>
> Subject: [meta-xilinx-bsp][PATCH v2] libmali-xlnx.bb: Add recipe to support MALI
> 400 binaries
>
> This recipe allows user to fetch the MALI 400 binaries from xilinx.com manually
> and use it with compatible machines based on UltraScale+ for
> libgles1/libgles2 and egl libraries.
>
> Signed-off-by: Manjukumar Matha <manjukumar.harthikote-matha at xilinx.com>
> ---
> Changelog:
>
> v2: add COMPATIBLE_MACHINE as zynqmpeg and zynqmpev
> add PACKAGE ARCH as soc_family and soc_variant
> The above changes are to meet the criteria for SOC_VARIANT introduced in
> recent patches
>
> .../recipes-graphics/libgles/files/egl.pc | 12 +++
> .../recipes-graphics/libgles/files/glesv1.pc | 12 +++
> .../recipes-graphics/libgles/files/glesv1_cm.pc | 12 +++
> .../recipes-graphics/libgles/files/glesv2.pc | 12 +++
> .../recipes-graphics/libgles/libmali-xlnx.bb | 108 +++++++++++++++++++++
> 5 files changed, 156 insertions(+)
> create mode 100644 meta-xilinx-bsp/recipes-graphics/libgles/files/egl.pc
> create mode 100644 meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1.pc
> create mode 100644 meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1_cm.pc
> create mode 100644 meta-xilinx-bsp/recipes-graphics/libgles/files/glesv2.pc
> create mode 100644 meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb
>
> diff --git a/meta-xilinx-bsp/recipes-graphics/libgles/files/egl.pc b/meta-xilinx-
> bsp/recipes-graphics/libgles/files/egl.pc
> new file mode 100644
> index 0000000..f9935f2
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/egl.pc
> @@ -0,0 +1,12 @@
> +prefix=/usr
> +exec_prefix=${prefix}
> +libdir=/usr/lib
> +includedir=/usr/include
> +
> +Name: egl
> +Description: MALI EGL library
> +Requires.private:
> +Version: r8p0
> +Libs: -L${libdir} -lEGL
> +Libs.private: -lm -lpthread -ldl
> +Cflags: -I${includedir}
> diff --git a/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1.pc b/meta-xilinx-
> bsp/recipes-graphics/libgles/files/glesv1.pc
> new file mode 100644
> index 0000000..4895400
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1.pc
> @@ -0,0 +1,12 @@
> +prefix=/usr
> +exec_prefix=${prefix}
> +libdir=/usr/lib
> +includedir=/usr/include
> +
> +Name: glesv1
> +Description: MALI OpenGL ES 1.1 library
> +Requires.private:
> +Version: r8p0
> +Libs: -L${libdir} -lGLESv1_CM
> +Libs.private: -lm -lpthread -ldl
> +Cflags: -I${includedir}
> diff --git a/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1_cm.pc b/meta-
> xilinx-bsp/recipes-graphics/libgles/files/glesv1_cm.pc
> new file mode 100644
> index 0000000..888af87
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1_cm.pc
> @@ -0,0 +1,12 @@
> +prefix=/usr
> +exec_prefix=${prefix}
> +libdir=/usr/lib
> +includedir=/usr/include
> +
> +Name: gles_cm
> +Description: Mali OpenGL ES 1.1 CM library
> +Requires.private:
> +Version: r8p0
> +Libs: -L${libdir} -lGLESv1_CM
> +Libs.private: -lm -lpthread -ldl
> +Cflags: -I${includedir}
> diff --git a/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv2.pc b/meta-xilinx-
> bsp/recipes-graphics/libgles/files/glesv2.pc
> new file mode 100644
> index 0000000..5047c39
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv2.pc
> @@ -0,0 +1,12 @@
> +prefix=/usr
> +exec_prefix=${prefix}
> +libdir=/usr/lib
> +includedir=/usr/include
> +
> +Name: glesv2
> +Description: MALI OpenGL ES 2.0 library
> +Requires.private:
> +Version: r8p0
> +Libs: -L${libdir} -lGLESv2
> +Libs.private: -lm -lpthread -ldl
> +Cflags: -I${includedir}
> diff --git a/meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb b/meta-xilinx-
> bsp/recipes-graphics/libgles/libmali-xlnx.bb
> new file mode 100644
> index 0000000..3e675d9
> --- /dev/null
> +++ b/meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb
> @@ -0,0 +1,108 @@
> +DESCRIPTION = "libGLES for ZynqMP with Mali 400"
> +
> +LICENSE = "Proprietary"
> +LICENSE_FLAGS = "xilinx"
> +LIC_FILES_CHKSUM =
> "file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8
> ac0b28"
> +
> +inherit distro_features_check
> +inherit xilinx-fetch-restricted
> +
> +ANY_OF_DISTRO_FEATURES = "fbdev x11"
> +
> +PROVIDES += "virtual/libgles1 virtual/libgles2 virtual/egl"
> +
> +FILESEXTRAPATHS_append := " \
> + ${THISDIR}/files: \
> + ${THISDIR}/r8p0-00rel0: "
> +
> +
> +# Fetch the MALI 400 binaries from here #
> +https://www.xilinx.com/member/forms/download/mali-driver-license.html?f
> +ilename=mali-400-userspace.tar
> +
> +PV = "r8p0-01rel0"
> +SRC_URI = " \
> + https://www.xilinx.com/member/forms/download/mali-driver-
> license.html?filename=mali-400-userspace.tar;downloadfilename=mali-400-
> userspace.tar \
> + file://egl.pc \
> + file://glesv1_cm.pc \
> + file://glesv1.pc \
> + file://glesv2.pc \
> + "
> +
> +SRC_URI[md5sum] = "e75b147c8b4ee96616e24572cdc9c21f"
> +SRC_URI[sha256sum] =
> "7b179ec2df54ee05a886cca1535c0bdc6cba77a646e22742adedc79bfc2b3017"
> +
> +COMPATIBLE_MACHINE = "^$"
> +COMPATIBLE_MACHINE_zynqmpeg = "zynqmpeg"
> +COMPATIBLE_MACHINE_zynqmpev = "zynqmpev"
> +
> +PACKAGE_ARCH = "${SOC_FAMILY}${SOC_VARIANT}"
> +
> +
> +S = "${WORKDIR}/mali-400"
> +
> +X11RDEPENDS = "libxdamage libxext libx11 libdrm libxfixes"
> +X11DEPENDS = "libxdamage libxext virtual/libx11 libdrm libxfixes"
> +
> +RDEPENDS_${PN} = " \
> + kernel-module-mali \
> + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11RDEPENDS}', '', d)}
> \
> + "
> +
> +DEPENDS = "\
> + ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)} \
> + "
> +
> +EGL_TYPE = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \
> + bb.utils.contains('DISTRO_FEATURES', 'fbdev', 'fbdev', '', d), d)}"
> +
> +do_compile() {
> + # Extract the MALI binaries into workdir
> + tar -xf ${WORKDIR}/mali/rel-v2018.1/r8p0-01rel0.tar -C ${S} }
> +
> +do_install() {
> + #Identify the ARCH type
> + ${TARGET_PREFIX}gcc --version > ARCH_PLATFORM
> + if grep -q aarch64 "ARCH_PLATFORM"; then
> + ARCH_PLATFORM_DIR=aarch64-linux-gnu
> + else
> + ARCH_PLATFORM_DIR=arm-linux-gnueabihf
> + fi
> +
> + # install headers
> + install -d -m 0655 ${D}${includedir}/EGL
> + install -m 0644
> ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/EGL/*.h
> ${D}${includedir}/EGL/
> + install -d -m 0655 ${D}${includedir}/GLES
> + install -m 0644
> ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/GLES/*.h
> ${D}${includedir}/GLES/
> + install -d -m 0655 ${D}${includedir}/GLES2
> + install -m 0644
> ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/GLES2/*.h
> ${D}${includedir}/GLES2/
> + install -d -m 0655 ${D}${includedir}/KHR
> + install -m 0644
> + ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/KHR/*.h
> + ${D}${includedir}/KHR/
> +
> + install -d ${D}${libdir}/pkgconfig
> + install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc
> + install -m 0644 ${WORKDIR}/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc
> + install -m 0644 ${WORKDIR}/glesv1.pc ${D}${libdir}/pkgconfig/glesv1.pc
> + install -m 0644 ${WORKDIR}/glesv1_cm.pc
> + ${D}${libdir}/pkgconfig/glesv1_cm.pc
> +
> + install -d ${D}${libdir}
> + cp -a --no-preserve=ownership
> + ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/lib/*.so*
> + ${D}${libdir}
> +
> + if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then
> + sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if (1)/'
> ${D}${includedir}/EGL/eglplatform.h
> + fi
> +}
> +
> +
> +# Inhibit warnings about files being stripped
> +INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
> +INHIBIT_PACKAGE_STRIP = "1"
> +INHIBIT_SYSROOT_STRIP = "1"
> +
> +RREPLACES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2"
> +RPROVIDES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2"
> +RCONFLICTS_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2"
> +
> +# These libraries shouldn't get installed in world builds unless
> +something # explicitly depends upon them.
> +EXCLUDE_FROM_WORLD = "1"
> --
> 2.7.4
More information about the meta-xilinx
mailing list