diff options
author | Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com> | 2018-05-21 18:06:21 -0700 |
---|---|---|
committer | Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com> | 2018-06-25 17:31:00 -0700 |
commit | f1bc90d59d3ff3d3d4954c221d686f4f2701706e (patch) | |
tree | 37f430cdd3e55c56267f0ba8ca6e2bc550e24dc4 | |
parent | a78050bebdcc08eb80c05661a6cacc634c7ced47 (diff) | |
download | meta-xilinx-f1bc90d59d3ff3d3d4954c221d686f4f2701706e.tar.gz |
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@xilinx.com>
5 files changed, 156 insertions, 0 deletions
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 00000000..f9935f25 --- /dev/null +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/egl.pc | |||
@@ -0,0 +1,12 @@ | |||
1 | prefix=/usr | ||
2 | exec_prefix=${prefix} | ||
3 | libdir=/usr/lib | ||
4 | includedir=/usr/include | ||
5 | |||
6 | Name: egl | ||
7 | Description: MALI EGL library | ||
8 | Requires.private: | ||
9 | Version: r8p0 | ||
10 | Libs: -L${libdir} -lEGL | ||
11 | Libs.private: -lm -lpthread -ldl | ||
12 | 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 00000000..48954007 --- /dev/null +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1.pc | |||
@@ -0,0 +1,12 @@ | |||
1 | prefix=/usr | ||
2 | exec_prefix=${prefix} | ||
3 | libdir=/usr/lib | ||
4 | includedir=/usr/include | ||
5 | |||
6 | Name: glesv1 | ||
7 | Description: MALI OpenGL ES 1.1 library | ||
8 | Requires.private: | ||
9 | Version: r8p0 | ||
10 | Libs: -L${libdir} -lGLESv1_CM | ||
11 | Libs.private: -lm -lpthread -ldl | ||
12 | 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 00000000..888af87e --- /dev/null +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv1_cm.pc | |||
@@ -0,0 +1,12 @@ | |||
1 | prefix=/usr | ||
2 | exec_prefix=${prefix} | ||
3 | libdir=/usr/lib | ||
4 | includedir=/usr/include | ||
5 | |||
6 | Name: gles_cm | ||
7 | Description: Mali OpenGL ES 1.1 CM library | ||
8 | Requires.private: | ||
9 | Version: r8p0 | ||
10 | Libs: -L${libdir} -lGLESv1_CM | ||
11 | Libs.private: -lm -lpthread -ldl | ||
12 | 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 00000000..5047c394 --- /dev/null +++ b/meta-xilinx-bsp/recipes-graphics/libgles/files/glesv2.pc | |||
@@ -0,0 +1,12 @@ | |||
1 | prefix=/usr | ||
2 | exec_prefix=${prefix} | ||
3 | libdir=/usr/lib | ||
4 | includedir=/usr/include | ||
5 | |||
6 | Name: glesv2 | ||
7 | Description: MALI OpenGL ES 2.0 library | ||
8 | Requires.private: | ||
9 | Version: r8p0 | ||
10 | Libs: -L${libdir} -lGLESv2 | ||
11 | Libs.private: -lm -lpthread -ldl | ||
12 | 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 00000000..3e675d9d --- /dev/null +++ b/meta-xilinx-bsp/recipes-graphics/libgles/libmali-xlnx.bb | |||
@@ -0,0 +1,108 @@ | |||
1 | DESCRIPTION = "libGLES for ZynqMP with Mali 400" | ||
2 | |||
3 | LICENSE = "Proprietary" | ||
4 | LICENSE_FLAGS = "xilinx" | ||
5 | LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Proprietary;md5=0557f9d92cf58f2ccdd50f62f8ac0b28" | ||
6 | |||
7 | inherit distro_features_check | ||
8 | inherit xilinx-fetch-restricted | ||
9 | |||
10 | ANY_OF_DISTRO_FEATURES = "fbdev x11" | ||
11 | |||
12 | PROVIDES += "virtual/libgles1 virtual/libgles2 virtual/egl" | ||
13 | |||
14 | FILESEXTRAPATHS_append := " \ | ||
15 | ${THISDIR}/files: \ | ||
16 | ${THISDIR}/r8p0-00rel0: " | ||
17 | |||
18 | |||
19 | # Fetch the MALI 400 binaries from here | ||
20 | # https://www.xilinx.com/member/forms/download/mali-driver-license.html?filename=mali-400-userspace.tar | ||
21 | |||
22 | PV = "r8p0-01rel0" | ||
23 | SRC_URI = " \ | ||
24 | https://www.xilinx.com/member/forms/download/mali-driver-license.html?filename=mali-400-userspace.tar;downloadfilename=mali-400-userspace.tar \ | ||
25 | file://egl.pc \ | ||
26 | file://glesv1_cm.pc \ | ||
27 | file://glesv1.pc \ | ||
28 | file://glesv2.pc \ | ||
29 | " | ||
30 | |||
31 | SRC_URI[md5sum] = "e75b147c8b4ee96616e24572cdc9c21f" | ||
32 | SRC_URI[sha256sum] = "7b179ec2df54ee05a886cca1535c0bdc6cba77a646e22742adedc79bfc2b3017" | ||
33 | |||
34 | COMPATIBLE_MACHINE = "^$" | ||
35 | COMPATIBLE_MACHINE_zynqmpeg = "zynqmpeg" | ||
36 | COMPATIBLE_MACHINE_zynqmpev = "zynqmpev" | ||
37 | |||
38 | PACKAGE_ARCH = "${SOC_FAMILY}${SOC_VARIANT}" | ||
39 | |||
40 | |||
41 | S = "${WORKDIR}/mali-400" | ||
42 | |||
43 | X11RDEPENDS = "libxdamage libxext libx11 libdrm libxfixes" | ||
44 | X11DEPENDS = "libxdamage libxext virtual/libx11 libdrm libxfixes" | ||
45 | |||
46 | RDEPENDS_${PN} = " \ | ||
47 | kernel-module-mali \ | ||
48 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11RDEPENDS}', '', d)} \ | ||
49 | " | ||
50 | |||
51 | DEPENDS = "\ | ||
52 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11', '${X11DEPENDS}', '', d)} \ | ||
53 | " | ||
54 | |||
55 | EGL_TYPE = "${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', \ | ||
56 | bb.utils.contains('DISTRO_FEATURES', 'fbdev', 'fbdev', '', d), d)}" | ||
57 | |||
58 | do_compile() { | ||
59 | # Extract the MALI binaries into workdir | ||
60 | tar -xf ${WORKDIR}/mali/rel-v2018.1/r8p0-01rel0.tar -C ${S} | ||
61 | } | ||
62 | |||
63 | do_install() { | ||
64 | #Identify the ARCH type | ||
65 | ${TARGET_PREFIX}gcc --version > ARCH_PLATFORM | ||
66 | if grep -q aarch64 "ARCH_PLATFORM"; then | ||
67 | ARCH_PLATFORM_DIR=aarch64-linux-gnu | ||
68 | else | ||
69 | ARCH_PLATFORM_DIR=arm-linux-gnueabihf | ||
70 | fi | ||
71 | |||
72 | # install headers | ||
73 | install -d -m 0655 ${D}${includedir}/EGL | ||
74 | install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/EGL/*.h ${D}${includedir}/EGL/ | ||
75 | install -d -m 0655 ${D}${includedir}/GLES | ||
76 | install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/GLES/*.h ${D}${includedir}/GLES/ | ||
77 | install -d -m 0655 ${D}${includedir}/GLES2 | ||
78 | install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/GLES2/*.h ${D}${includedir}/GLES2/ | ||
79 | install -d -m 0655 ${D}${includedir}/KHR | ||
80 | install -m 0644 ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/include/KHR/*.h ${D}${includedir}/KHR/ | ||
81 | |||
82 | install -d ${D}${libdir}/pkgconfig | ||
83 | install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc | ||
84 | install -m 0644 ${WORKDIR}/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc | ||
85 | install -m 0644 ${WORKDIR}/glesv1.pc ${D}${libdir}/pkgconfig/glesv1.pc | ||
86 | install -m 0644 ${WORKDIR}/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc | ||
87 | |||
88 | install -d ${D}${libdir} | ||
89 | cp -a --no-preserve=ownership ${S}/${PV}/${ARCH_PLATFORM_DIR}/${EGL_TYPE}/usr/lib/*.so* ${D}${libdir} | ||
90 | |||
91 | if ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'false', 'true', d)}; then | ||
92 | sed -i -e 's/^#if defined(MESA_EGL_NO_X11_HEADERS)$/#if (1)/' ${D}${includedir}/EGL/eglplatform.h | ||
93 | fi | ||
94 | } | ||
95 | |||
96 | |||
97 | # Inhibit warnings about files being stripped | ||
98 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" | ||
99 | INHIBIT_PACKAGE_STRIP = "1" | ||
100 | INHIBIT_SYSROOT_STRIP = "1" | ||
101 | |||
102 | RREPLACES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2" | ||
103 | RPROVIDES_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2" | ||
104 | RCONFLICTS_${PN} = "libegl libgles1 libglesv1-cm1 libgles2 libglesv2-2" | ||
105 | |||
106 | # These libraries shouldn't get installed in world builds unless something | ||
107 | # explicitly depends upon them. | ||
108 | EXCLUDE_FROM_WORLD = "1" | ||