diff options
Diffstat (limited to 'recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc')
-rw-r--r-- | recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc new file mode 100644 index 0000000..4106848 --- /dev/null +++ b/recipes-graphics/gpu-viv-bin-mx6q/gpu-viv-bin-mx6q.inc | |||
@@ -0,0 +1,259 @@ | |||
1 | # Copyright (C) 2012-2013 Freescale Semiconductor | ||
2 | # Copyright (C) 2012-2014 O.S. Systems Software LTDA. | ||
3 | # Released under the MIT license (see COPYING.MIT for the terms) | ||
4 | |||
5 | DESCRIPTION = "GPU driver and apps for imx6" | ||
6 | SECTION = "libs" | ||
7 | LICENSE = "Proprietary" | ||
8 | LIC_FILES_CHKSUM = "file://usr/include/gc_vdk.h;endline=11;md5=19f5925343fa3da65596eeaa4ddb5fd3" | ||
9 | |||
10 | DEPENDS += "${@base_contains('DISTRO_FEATURES', 'x11', 'virtual/libx11 libxdamage libxext libxfixes mesa', \ | ||
11 | base_contains('DISTRO_FEATURES', 'wayland', 'wayland', \ | ||
12 | '', d), d)}" | ||
13 | |||
14 | PROVIDES += "virtual/wayland-egl virtual/libgl virtual/libgal-x11 virtual/egl virtual/libgles1 virtual/libgles2 virtual/libopenvg" | ||
15 | |||
16 | PE = "1" | ||
17 | |||
18 | inherit fsl-eula-unpack | ||
19 | |||
20 | SRC_URI = "${FSL_MIRROR}/${PN}-${PV}.bin;fsl-eula=true \ | ||
21 | file://egl.pc \ | ||
22 | file://egl_x11.pc \ | ||
23 | file://glesv1_cm.pc \ | ||
24 | file://glesv1_cm_x11.pc \ | ||
25 | file://glesv2.pc \ | ||
26 | file://glesv2_x11.pc \ | ||
27 | file://vg.pc \ | ||
28 | file://vg_x11.pc \ | ||
29 | file://gc_wayland_protocol.pc \ | ||
30 | file://wayland-egl.pc \ | ||
31 | file://wayland-viv.pc \ | ||
32 | file://directfbrc \ | ||
33 | " | ||
34 | |||
35 | PACKAGES =+ "libclc-mx6 libclc-mx6-dev libclc-mx6-dbg \ | ||
36 | libgl-mx6 libgl-mx6-dev libgl-mx6-dbg \ | ||
37 | libgles-mx6 libgles-mx6-dev libgles-mx6-dbg \ | ||
38 | libgles2-mx6 libgles2-mx6-dev libgles2-mx6-dbg \ | ||
39 | libglslc-mx6 libglslc-mx6-dev libglslc-mx6-dbg \ | ||
40 | libopencl-mx6 libopencl-mx6-dev libopencl-mx6-dbg \ | ||
41 | libopenvg-mx6 libopenvg-mx6-dev libopenvg-mx6-dbg \ | ||
42 | libvdk-mx6 libvdk-mx6-dev libvdk-mx6-dbg \ | ||
43 | libegl-mx6 libegl-mx6-dev libegl-mx6-dbg \ | ||
44 | libgal-mx6 libgal-mx6-dev libgal-mx6-dbg \ | ||
45 | libvivante-mx6 libvivante-mx6-dev libvivante-mx6-dbg \ | ||
46 | libvivante-dri-mx6 \ | ||
47 | libvivante-dfb-mx6 \ | ||
48 | libwayland-viv-mx6 libwayland-viv-mx6-dev libwayland-viv-mx6-dbg \ | ||
49 | libgc-wayland-protocol-mx6 libgc-wayland-protocol-mx6-dev libgc-wayland-protocol-mx6-dbg \ | ||
50 | libwayland-egl-mx6-dev \ | ||
51 | " | ||
52 | |||
53 | # Skip package if it does not match the machine float-point type in use | ||
54 | python __anonymous () { | ||
55 | is_machine_hardfp = base_contains("TUNE_FEATURES", "callconvention-hard", True, False, d) | ||
56 | is_package_hardfp = d.getVar("PACKAGE_FP_TYPE", True) == "hardfp" | ||
57 | |||
58 | if is_package_hardfp != is_machine_hardfp: | ||
59 | PN = d.getVar("PN", True) | ||
60 | PV = d.getVar("PV", True) | ||
61 | bb.debug(1, "Skipping %s (%s) as machine and package float-point does not match" % (PN, PV)) | ||
62 | raise bb.parse.SkipPackage("Package Float-Point is not compatible with the machine") | ||
63 | } | ||
64 | |||
65 | USE_X11 = "${@base_contains("DISTRO_FEATURES", "x11", "yes", "no", d)}" | ||
66 | USE_DFB = "${@base_contains("DISTRO_FEATURES", "directfb", "yes", "no", d)}" | ||
67 | USE_WL = "${@base_contains("DISTRO_FEATURES", "wayland", "yes", "no", d)}" | ||
68 | |||
69 | # Inhibit warnings about files being stripped. | ||
70 | INHIBIT_PACKAGE_STRIP = "1" | ||
71 | INHIBIT_PACKAGE_DEBUG_SPLIT = "1" | ||
72 | |||
73 | # FIXME: The provided binary doesn't provide soname. If in future BSP | ||
74 | # release the libraries are fixed, we can drop this hack. | ||
75 | REALSOLIBS := "${SOLIBS}" | ||
76 | SOLIBS = "${SOLIBSDEV}" | ||
77 | |||
78 | # For the packages that make up the OpenGL interfaces, inject variables so that | ||
79 | # they don't get Debian-renamed (which would remove the -mx6 suffix). | ||
80 | # | ||
81 | # FIXME: All binaries lack GNU_HASH in elf binary but as we don't have | ||
82 | # the source we cannot fix it. Disable the insane check for now. | ||
83 | python __anonymous() { | ||
84 | packages = d.getVar('PACKAGES', True).split() | ||
85 | for p in packages: | ||
86 | d.appendVar("INSANE_SKIP_%s" % p, " ldflags") | ||
87 | |||
88 | for p in (("libegl", "libegl1"), ("libgl", "libgl1"), | ||
89 | ("libgles1", "libglesv1-cm1"), ("libgles2", "libglesv2-2"), | ||
90 | ("libgles3",)): | ||
91 | fullp = p[0] + "-mx6" | ||
92 | pkgs = " ".join(p) | ||
93 | d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") | ||
94 | d.appendVar("RREPLACES_" + fullp, pkgs) | ||
95 | d.appendVar("RPROVIDES_" + fullp, pkgs) | ||
96 | d.appendVar("RCONFLICTS_" + fullp, pkgs) | ||
97 | |||
98 | # For -dev, the first element is both the Debian and original name | ||
99 | fullp += "-dev" | ||
100 | pkgs = p[0] + "-dev" | ||
101 | d.setVar("DEBIAN_NOAUTONAME_" + fullp, "1") | ||
102 | d.appendVar("RREPLACES_" + fullp, pkgs) | ||
103 | d.appendVar("RPROVIDES_" + fullp, pkgs) | ||
104 | d.appendVar("RCONFLICTS_" + fullp, pkgs) | ||
105 | } | ||
106 | |||
107 | do_install () { | ||
108 | install -d ${D}${libdir} | ||
109 | install -d ${D}${includedir} | ||
110 | |||
111 | cp -a ${S}/usr/lib/*.so* ${D}${libdir} | ||
112 | cp -axr ${S}/usr/include/* ${D}${includedir} | ||
113 | cp -axr ${S}/opt ${D} | ||
114 | |||
115 | install -d ${D}${libdir}/pkgconfig | ||
116 | |||
117 | # The preference order, based in DISTRO_FEATURES, is x11, wayland, directfb and fb | ||
118 | if [ "${USE_X11}" = "yes" ]; then | ||
119 | cp -r ${S}/usr/lib/dri ${D}${libdir} | ||
120 | backend=x11 | ||
121 | |||
122 | install -m 0644 ${WORKDIR}/egl_x11.pc ${D}${libdir}/pkgconfig/egl.pc | ||
123 | install -m 0644 ${WORKDIR}/glesv1_cm_x11.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc | ||
124 | install -m 0644 ${WORKDIR}/glesv2_x11.pc ${D}${libdir}/pkgconfig/glesv2.pc | ||
125 | install -m 0644 ${WORKDIR}/vg_x11.pc ${D}${libdir}/pkgconfig/vg.pc | ||
126 | #FIXME: WL & X11 is not currently functional | ||
127 | #if [ "${USE_WL}" = "yes" ]; then | ||
128 | # install -m 0644 ${WORKDIR}/gc_wayland_protocol.pc ${D}${libdir}/pkgconfig/gc_wayland_protocol.pc | ||
129 | # install -m 0644 ${WORKDIR}/wayland-egl.pc ${D}${libdir}/pkgconfig/wayland-egl.pc | ||
130 | # install -m 0644 ${WORKDIR}/wayland-viv.pc ${D}${libdir}/pkgconfig/wayland-viv.pc | ||
131 | #fi | ||
132 | elif [ "${USE_WL}" = "yes" ]; then | ||
133 | backend=wl | ||
134 | |||
135 | install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc | ||
136 | install -m 0644 ${WORKDIR}/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc | ||
137 | install -m 0644 ${WORKDIR}/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc | ||
138 | install -m 0644 ${WORKDIR}/vg.pc ${D}${libdir}/pkgconfig/vg.pc | ||
139 | install -m 0644 ${WORKDIR}/gc_wayland_protocol.pc ${D}${libdir}/pkgconfig/gc_wayland_protocol.pc | ||
140 | install -m 0644 ${WORKDIR}/wayland-egl.pc ${D}${libdir}/pkgconfig/wayland-egl.pc | ||
141 | install -m 0644 ${WORKDIR}/wayland-viv.pc ${D}${libdir}/pkgconfig/wayland-viv.pc | ||
142 | else | ||
143 | install -m 0644 ${WORKDIR}/egl.pc ${D}${libdir}/pkgconfig/egl.pc | ||
144 | install -m 0644 ${WORKDIR}/glesv1_cm.pc ${D}${libdir}/pkgconfig/glesv1_cm.pc | ||
145 | install -m 0644 ${WORKDIR}/glesv2.pc ${D}${libdir}/pkgconfig/glesv2.pc | ||
146 | install -m 0644 ${WORKDIR}/vg.pc ${D}${libdir}/pkgconfig/vg.pc | ||
147 | |||
148 | if [ "${USE_DFB}" = "yes" ]; then | ||
149 | install -d ${D}/${sysconfdir} | ||
150 | install -m 644 ${WORKDIR}/directfbrc ${D}/${sysconfdir}/directfbrc | ||
151 | |||
152 | cp -r ${S}/usr/lib/directfb-1.6-0 ${D}${libdir} | ||
153 | backend=dfb | ||
154 | else | ||
155 | # Regular framebuffer | ||
156 | backend=fb | ||
157 | fi | ||
158 | fi | ||
159 | |||
160 | # We'll only have one backend here so we rename it to generic name | ||
161 | # and avoid rework in other packages, when possible | ||
162 | mv ${D}${libdir}/libGL.so.1.2 ${D}${libdir}/libGL.so.1.2.0 | ||
163 | ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so.1.2 | ||
164 | ln -sf libGL.so.1.2.0 ${D}${libdir}/libGL.so | ||
165 | mv ${D}${libdir}/libEGL-${backend}.so ${D}${libdir}/libEGL.so.1.0 | ||
166 | ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so.1 | ||
167 | ln -sf libEGL.so.1.0 ${D}${libdir}/libEGL.so | ||
168 | mv ${D}${libdir}/libGAL-${backend}.so ${D}${libdir}/libGAL.so | ||
169 | mv ${D}${libdir}/libVIVANTE-${backend}.so ${D}${libdir}/libVIVANTE.so | ||
170 | |||
171 | # update libglesv2 as backend dependent | ||
172 | rm -rf ${D}${libdir}/libGLESv2* | ||
173 | cp -a ${S}/usr/lib/libGLESv2-${backend}.so ${D}${libdir}/libGLESv2.so.2.0.0 | ||
174 | ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so.2 | ||
175 | ln -sf libGLESv2.so.2.0.0 ${D}${libdir}/libGLESv2.so | ||
176 | |||
177 | for backend in wl x11 fb dfb; do | ||
178 | find ${D}${libdir} -name "*-$backend.so" -exec rm '{}' ';' | ||
179 | done | ||
180 | |||
181 | find ${D}${libdir} -type f -exec chmod 644 {} \; | ||
182 | find ${D}${includedir} -type f -exec chmod 644 {} \; | ||
183 | } | ||
184 | |||
185 | FILES_${PN} += "/opt" | ||
186 | FILES_${PN}-dev = "${includedir}" | ||
187 | FILES_${PN}-dbg = "${libdir}/.debug /opt/viv_samples/*/*/.debug" | ||
188 | |||
189 | FILES_libclc-mx6 = "${libdir}/libCLC${SOLIBS}" | ||
190 | FILES_libclc-mx6-dev = "${includedir}/CL ${libdir}/libCLC${SOLIBSDEV}" | ||
191 | FILES_libclc-mx6-dbg = "${libdir}/.debug/libCLC${SOLIBS}" | ||
192 | |||
193 | # libEGL.so is used by some demo apps from Freescale | ||
194 | INSANE_SKIP_libegl-mx6 += "dev-so" | ||
195 | FILES_libegl-mx6 = "${libdir}/libEGL${REALSOLIBS} ${libdir}/libEGL${SOLIBSDEV} " | ||
196 | FILES_libegl-mx6-dev = "${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc" | ||
197 | FILES_libegl-mx6-dbg = "${libdir}/.debug/libEGL${SOLIBS}" | ||
198 | |||
199 | FILES_libgal-mx6 = "${libdir}/libGAL${SOLIBS}" | ||
200 | FILES_libgal-mx6-dev = "${libdir}/libGAL${SOLIBSDEV}" | ||
201 | FILES_libgal-mx6-dbg = "${libdir}/.debug/libGAL${SOLIBS}" | ||
202 | |||
203 | FILES_libgl-mx6 = "${libdir}/libGL${REALSOLIBS}" | ||
204 | FILES_libgl-mx6-dev = "${libdir}/libGL${SOLIBSDEV}" | ||
205 | FILES_libgl-mx6-dbg = "${libdir}/.debug/libGL.${SOLIBS}" | ||
206 | |||
207 | # libEGL needs to open libGLESv1.so | ||
208 | INSANE_SKIP_libgles-mx6 += "dev-so" | ||
209 | FILES_libgles-mx6 = "${libdir}/libGLESv1*${REALSOLIBS} ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBS}" | ||
210 | FILES_libgles-mx6-dev = "${includedir}/GLES ${libdir}/libGLESv1*${SOLIBS} ${libdir}/libGLES_*${SOLIBSDEV} ${libdir}/pkgconfig/glesv1_cm.pc" | ||
211 | FILES_libgles-mx6-dbg = "${libdir}/.debug/libGLESv1*${SOLIBS} ${libdir}/.debug/libGLES_*${SOLIBS}" | ||
212 | |||
213 | # libEGL needs to open libGLESv2.so | ||
214 | INSANE_SKIP_libgles2-mx6 += "dev-so" | ||
215 | FILES_libgles2-mx6 = "${libdir}/libGLESv2${REALSOLIBS} ${libdir}/libGLESv2${SOLIBS}" | ||
216 | FILES_libgles2-mx6-dev = "${includedir}/GLES2 ${libdir}/libGLESv2${SOLIBSDEV} ${libdir}/pkgconfig/glesv2.pc" | ||
217 | FILES_libgles2-mx6-dbg = "${libdir}/.debug/libGLESv2${SOLIBS}" | ||
218 | RDEPENDS_libgles2-mx6 = "libglslc-mx6" | ||
219 | |||
220 | FILES_libglslc-mx6 = "${libdir}/libGLSLC${SOLIBS}" | ||
221 | FILES_libglslc-mx6-dev = "${includedir}/CL ${libdir}/libGLSLC${SOLIBSDEV}" | ||
222 | FILES_libglslc-mx6-dbg = "${libdir}/.debug/libGLSLC${SOLIBS}" | ||
223 | |||
224 | FILES_libopencl-mx6 = "${libdir}/libOpenCL${SOLIBS}" | ||
225 | FILES_libopencl-mx6-dev = "${includedir}/CL ${libdir}/libOpenCL${SOLIBSDEV}" | ||
226 | FILES_libopencl-mx6-dbg = "${libdir}/.debug/libOpenCL${SOLIBS}" | ||
227 | RDEPENDS_libopencl-mx6 = "libclc-mx6" | ||
228 | |||
229 | FILES_libopenvg-mx6 = "${libdir}/libOpenVG*${SOLIBS}" | ||
230 | FILES_libopenvg-mx6-dev = "${includedir}/VG ${libdir}/libOpenVG*${SOLIBSDEV} ${libdir}/pkgconfig/vg.pc" | ||
231 | FILES_libopenvg-mx6-dbg = "${libdir}/.debug/libOpenVG*${SOLIBS}" | ||
232 | |||
233 | FILES_libvdk-mx6 = "${libdir}/libVDK${SOLIBS}" | ||
234 | FILES_libvdk-mx6-dev = "${includedir}/*vdk.h ${libdir}/libVDK${SOLIBSDEV}" | ||
235 | FILES_libvdk-mx6-dbg = "${libdir}/.debug/libVDK${SOLIBS}" | ||
236 | |||
237 | FILES_libvivante-mx6 = "${libdir}/libVIVANTE${SOLIBS}" | ||
238 | FILES_libvivante-mx6-dev = "${libdir}/libVIVANTE${SOLIBSDEV}" | ||
239 | FILES_libvivante-mx6-dbg = "${libdir}/.debug/libVIVANTE${SOLIBS}" | ||
240 | |||
241 | FILES_libvivante-dri-mx6 = "${libdir}/dri/vivante_dri.so" | ||
242 | |||
243 | FILES_libvivante-dfb-mx6 = "${libdir}/directfb-1.6-0/gfxdrivers/libdirectfb_gal.so" | ||
244 | |||
245 | INSANE_SKIP_libwayland-viv-mx6 += "dev-so" | ||
246 | FILES_libwayland-viv-mx6 = "${libdir}/libwayland-viv${REALSOLIBS} ${libdir}/libwayland-viv${SOLIBS}" | ||
247 | FILES_libwayland-viv-mx6-dev = "${libdir})/libwayland-viv${SOLIBSDEV} ${libdir}/pkgconfig/wayland-viv.pc" | ||
248 | FILES_libwayland-viv-mx6-dbg = "${libdir}/.debug/libwayland-viv${SOLIBS}" | ||
249 | |||
250 | INSANE_SKIP_libgc-wayland-protocol-mx6 += "dev-so" | ||
251 | FILES_libgc-wayland-protocol-mx6 = "${libdir}/libgc_wayland_protocol${REALSOLIBS} ${libdir}/libgc_wayland_protocol${SOLIBS}" | ||
252 | FILES_libgc-wayland-protocol-mx6-dev = "${libdir}/libgc_wayland_protocol${SOLIBSDEV} ${libdir}/pkgconfig/gc_wayland_protocol.pc" | ||
253 | FILES_libgc-wayland-protocol-mx6-dbg = "${libdir}/libgc_wayland_protocol${SOLIBS}" | ||
254 | |||
255 | FILES_libwayland-egl-mx6-dev = "${libdir}/pkgconfig/wayland-egl.pc" | ||
256 | |||
257 | FILES_libvivante-dfb-mx6 += "${sysconfdir}/directfbrc" | ||
258 | |||
259 | COMPATIBLE_MACHINE = "(mx6)" | ||