libgles-omap3-es23: use correct kernel module for cc/rebirth
[openembedded.git] / recipes / powervr-drivers / libgles-omap3.inc
1 DESCRIPTION = "libGLES for the omap3"
2 LICENCE = "proprietary-binary"
3
4 COMPATIBLE_MACHINE = "(am3517-evm|beagleboard|cm-t35|igep0020|omap3-pandora|omap3-touchbook|omap3evm|omapzoom|omapzoom2|overo|palmpre)"
5
6 DEPENDS = "virtual/libx11 libxau libxdmcp"
7
8 PROVIDES += "virtual/egl"
9
10 # some hints to get you going. as this isnt a totally "open" library, you need
11 # to do some work. follow the steps below.
12 #
13 # 1. if you don't already have a ti account get one here. it's free:
14 #  http://www.ti.com/hdr_my_ti
15 # 2. fetch the gl-es bin from here:
16 #  https://www-a.ti.com/downloads/sds_support/targetcontent/dvsdk/oslinux_dvsdk/v3_00_3530/OMAP35x_Graphics_SDK_setuplinux_3_00_00_06.bin
17 # (replace version in .bin file as appropriate)
18 # 3. put the OMAP35x_*.bin file in libgles-omap3/
19 #  mv OMAP35x_Graphics_SDK_setuplinux_3_00_00_06.bin ./libgles-omap3/
20
21 # voila!
22
23 SRC_URI = "file://OMAP35x_Graphics_SDK_setuplinux_${SGXPV}.bin \
24                    file://cputype \
25                    file://rc.pvr \
26                    file://sample.desktop \
27                    file://99-bufferclass.rules  \
28 "
29
30 S = "${WORKDIR}/OMAP35x_Graphics_SDK_${SGXPV}"
31
32 # Logic to unpack installjammer file
33 TI_BIN_UNPK_CMDS="Y: qY:workdir:Y"
34 require ../ti/ti-eula-unpack.inc
35
36 BINLOCATION ?= "${S}/gfx_rel"
37 ES2LOCATION ?= "${S}/gfx_rel_es2.x"
38 ES3LOCATION ?= "${S}/gfx_rel_es3.x"
39 ES5LOCATION ?= "${S}/gfx_rel_es5.x"
40
41 do_configure() {
42         # Attempt to fix up the worst offenders for file permissions
43         for i in $(find ${S} -name "*.h") $(find ${S} -name "*.c") $(find ${S} -name "Make*") ; do
44                 chmod 0644 $i
45         done 
46
47         # Attempt to create proper library softlinks
48         for sofile in $(find ${S} -name "lib*.so"); do
49                 if [ "$(readlink -n ${sofile})" = "" ] ; then
50                         mv $sofile ${sofile}.${IMGPV}
51                         ln -sf $(basename ${sofile}.${IMGPV}) ${sofile}
52                         ln -sf $(basename ${sofile}.${IMGPV}) ${sofile}$(echo ${IMGPV} | awk -F. '{print "." $1}')
53                         ln -sf $(basename ${sofile}.${IMGPV}) ${sofile}$(echo ${IMGPV} | awk -F. '{print "." $1 "." $2}')
54                 fi
55         done
56
57         # Due to recursive make PLAT_* isn't always passed down correctly, so use sed to fix those
58         for mak in $(find ${S} -name "*.mak") ; do
59                 sed -i -e s:arm-none-linux-gnueabi-:${TARGET_PREFIX}:g $mak
60         done
61
62         # clear out old stuff
63         find Binaries/ | xargs rm -f || true
64 }
65
66 # Force in GNU_HASH and paths to libs
67 TARGET_CC_ARCH += " ${TARGET_LINK_HASH_STYLE} -Wl,-rpath-link,${BINLOCATION} -L${BINLOCATION}"
68 PARALLEL_MAKE = ""
69
70 do_compile() {
71         export X11ROOT="${STAGING_INCDIR}"
72         export PLATFORM="LinuxOMAP3"
73
74         export PLAT_CC="${CC}"
75         export PLAT_CPP="${CXX}"
76         export PLAR_AR="${AR}"
77
78         mkdir -p ${S}/demos/raw
79         mkdir -p ${S}/demos/x11
80
81         # Rebuild demos for both Raw and X11
82         for X11BUILD in 0 1 ; do
83                 for demo in ${S}/GFX_Linux_SDK/OGLES/SDKPackage/Demos/* ; do
84                         cd $demo/OGLES/Build/LinuxGeneric
85                         oe_runmake Common=1 PLATFORM=$PLATFORM X11BUILD=$X11BUILD  
86                         rm $demo/OGLES/Build/LinuxOMAP3/Release*/*.o
87                         install -m 0755 $demo/OGLES/Build/LinuxOMAP3/ReleaseX11/* ${S}/demos/x11 || true
88                         sed -e s:NAME:$(basename $demo): \
89                             -e s:EXEC:${bindir}/SGX/demos/X11/$(basename $demo/OGLES/Build/LinuxOMAP3/ReleaseX11/*): \
90                              ${WORKDIR}/sample.desktop > ${WORKDIR}/$(basename $demo).desktop
91                         install -m 0755 $demo/OGLES/Build/LinuxOMAP3/ReleaseRaw/* ${S}/demos/raw || true        
92                 done
93                 for demo in ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/Demos/* ; do
94                         cd $demo/OGLES2/Build/LinuxGeneric
95                         oe_runmake Common=1 PLATFORM=$PLATFORM X11BUILD=$X11BUILD  
96                         rm $demo/OGLES2/Build/LinuxOMAP3/Release*/*.o
97                         install -m 0755 $demo/OGLES2/Build/LinuxOMAP3/ReleaseX11/* ${S}/demos/x11 || true
98                         sed -e s:NAME:$(basename $demo): \
99                             -e s:EXEC:${bindir}/SGX/demos/X11/$(basename $demo/OGLES2/Build/LinuxOMAP3/ReleaseX11/*): \
100                              ${WORKDIR}/sample.desktop > ${WORKDIR}/$(basename $demo).desktop
101                         install -m 0755 $demo/OGLES2/Build/LinuxOMAP3/ReleaseRaw/* ${S}/demos/raw || true       
102                 done
103         done
104
105         mkdir -p ${S}/trainingcourses/raw
106         mkdir -p ${S}/trainingcourses/x11
107
108         # Build OGLES2 Trainingcourses for both Raw and X11
109         for X11BUILD in 0 1 ; do
110                 for training in ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/TrainingCourse/* ; do
111                         if [ -e $training/OGLES2/Build/LinuxGeneric/Makefile ] ; then
112                                 cd $training/OGLES2/Build/LinuxGeneric
113                         fi
114
115                         if [ -e $training/OGLES2/Build/LinuxOMAP3/Makefile ] ; then
116                                 cd $training/OGLES2/Build/LinuxOMAP3
117                         fi                      
118
119                         oe_runmake Common=1 PLATFORM=$PLATFORM X11BUILD=$X11BUILD  
120                         rm $training/OGLES2/Build/LinuxOMAP3/Release*/*.o
121                         install -m 0755 $training/OGLES2/Build/LinuxOMAP3/ReleaseX11/* ${S}/trainingcourses/x11 || true
122                         install -m 0755 $training/OGLES2/Build/LinuxOMAP3/ReleaseRaw/* ${S}/trainingcourses/raw || true 
123                 done
124         done
125
126 }
127
128 do_install () {
129         install -d ${D}${libdir}
130         cp -pPR ${BINLOCATION}/*.so* ${D}${libdir}
131         install -m 0644 ${BINLOCATION}/*.a ${D}${libdir}
132
133         install -d ${D}${bindir}/
134         install -m 0755 ${WORKDIR}/cputype ${D}${bindir}/
135
136         install -m 0755 ${BINLOCATION}/*_test ${D}${bindir}/
137         install -m 0755 ${BINLOCATION}/gl* ${D}${bindir}/
138         install -m 0755 ${BINLOCATION}/pvr* ${D}${bindir}/
139         install -m 0755 ${BINLOCATION}/xgles1test1 ${D}${bindir}/
140
141         install -m 0755 ${BINLOCATION}/freedesktop/kdrive/usr/X11R6_SGX/bin/Xsgx ${D}${bindir}/|| true
142
143         install -d ${D}${includedir}
144         cp -pPR ${S}/GFX_Linux_KM/include4 ${D}${includedir}/
145         cp -pPR ${S}/GFX_Linux_KM/services4 ${D}${includedir}/
146
147         cp -pPR ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/Include/* ${D}${includedir}/
148         cp -pPR ${S}/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/Include/* ${D}${includedir}/
149         cp -pPR ${S}/GFX_Linux_SDK/OGLES/SDKPackage/Builds/OGLES/LinuxOMAP3/Include/GLES/* ${D}${includedir}/GLES/ || true
150         cp -pPr ${S}/GFX_Linux_SDK/OGLES2/SDKPackage/Builds/OGLES2/LinuxOMAP3/Include/GLES/* ${D}${includedir}/GLES2/ || true
151         cp -pPr ${S}/GFX_Linux_SDK/OVG/SDKPackage/Builds/OVG/Include/v* ${D}${includedir}/ || true
152         cp -pPr ${S}/GFX_Linux_SDK/OVG/SDKPackage/Builds/OVG/Include/V* ${D}${includedir}/ || true
153         cp -pPr ${S}/include/*.h ${D}${includedir} || true
154         
155         install -d ${D}${sysconfdir}/init.d/
156         cp -pP ${WORKDIR}/rc.pvr ${D}${sysconfdir}/init.d/pvr-init
157
158         install -d ${D}${sysconfdir}
159         echo "[default]" > ${D}${sysconfdir}/powervr.ini
160         echo "WindowSystem=libpvrPVR2D_FRONTWSEGL.so" >> ${D}${sysconfdir}/powervr.ini
161
162         # The ES2.x, ES3.x and ES5.x CPUs have different SGX hardware, so we need to install 2 sets of userspace
163
164         install -d ${D}${libdir}/ES5.0
165         install -d ${D}${libdir}/ES3.0
166         install -d ${D}${libdir}/ES2.0
167
168         install -d ${D}${bindir}/ES5.0
169         install -d ${D}${bindir}/ES3.0
170         install -d ${D}${bindir}/ES2.0
171
172
173         cp -pPR ${ES2LOCATION}/lib*${IMGPV} ${D}${libdir}/ES2.0/
174         cp ${ES2LOCATION}/pvr* ${D}${bindir}/ES2.0/
175
176         cp -pPR ${D}${libdir}/lib*${IMGPV} ${D}${libdir}/ES3.0/
177         cp ${D}${bindir}/pvr* ${D}${bindir}/ES3.0
178
179         if [ -e ${ES5LOCATION} ] ; then 
180                 cp -pPR ${ES5LOCATION}/lib*${IMGPV} ${D}${libdir}/ES5.0/
181                 cp ${ES5LOCATION}/pvr* ${D}${bindir}/ES5.0/
182         fi
183
184         install -d ${D}${prefix}/share/applications
185         cp ${WORKDIR}/*.desktop ${D}${prefix}/share/applications
186         rm ${D}${prefix}/share/applications/sample.desktop
187
188         install -d ${D}${bindir}/SGX/demos/X11/
189         install -d ${D}${bindir}/SGX/demos/Raw/
190         install -m 0755 ${S}/demos/x11/* ${D}${bindir}/SGX/demos/X11/
191         install -m 0755 ${S}/demos/raw/* ${D}${bindir}/SGX/demos/Raw/
192
193         install -d ${D}${bindir}/SGX/trainingcourses/Raw
194         install -d ${D}${bindir}/SGX/trainingcourses/X11
195         install -m 0755 ${S}/trainingcourses/x11/* ${D}${bindir}/SGX/trainingcourses/X11/
196         install -m 0755 ${S}/trainingcourses/raw/* ${D}${bindir}/SGX/trainingcourses/Raw/
197
198         # Delete objects and linker scripts hidden between the headers
199         find ${D} -name "*.o" -delete
200         find ${D} -name "*.o.cmd" -delete
201
202         install -d ${D}${sysconfdir}/udev/rules.d
203         install -m 0644 ${WORKDIR}/99-bufferclass.rules ${D}${sysconfdir}/udev/rules.d/
204
205 }
206
207 PACKAGES =+ "${PN}-rawdemos \
208              ${PN}-x11demos \
209              ${PN}-rawtrainingcourses \
210              ${PN}-x11trainingcourses \
211 "
212
213 PACKAGES += "xserver-kdrive-powervrsgx \
214              ${PN}-tests "
215
216 FILES_${PN} = "${sysconfdir} ${libdir}/lib*.so.* ${libdir}/ES*/* ${bindir}/pvrsrvinit ${bindir}/cputype ${bindir}/*/*"
217 FILES_xserver-kdrive-powervrsgx = "${bindir}/Xsgx"
218 FILES_${PN}-tests = "${bindir}/*"
219 FILES_${PN}-dbg = "${libdir}/.debug/* ${bindir}/.debug/* \
220                    ${libdir}/ES*/.debug ${bindir}/*/.debug\
221                    ${bindir}/SGX/demos/*/.debug/* \
222                    ${bindir}/SGX/trainingcourses/*/.debug/* \
223         "
224
225 FILES_${PN}-rawdemos = "${bindir}/SGX/demos/Raw/*"
226 FILES_${PN}-x11demos = "${bindir}/SGX/demos/X11/* ${prefix}/share/applications "
227
228 FILES_${PN}-rawtrainingcourses = "${bindir}/SGX/trainingcourses/Raw/*"
229 FILES_${PN}-x11trainingcourses = "${bindir}/SGX/trainingcourses/X11/*"
230
231 # The libs need the kernel-modules
232 RRECOMMENDS_${PN} = "omap3-sgx-modules"
233
234 # The initscript calls fbset, cputype calls devmem2
235 RDEPENDS_${PN} += "fbset devmem2"
236
237 #HACK! These are binaries, so we can't guarantee that LDFLAGS match :(
238 INSANE_SKIP_${PN} = True
239 INSANE_SKIP_${PN}-tests = True
240 INSANE_SKIP_xserver-kdrive-powervrsgx = True
241
242 # Quality control is really poor on these SDKs, so hack around the latest madness:
243 FILES_${PN} += "${libdir}/*.so "
244 FILES_${PN}-dev = "${includedir}"
245
246 inherit update-rc.d
247
248 INITSCRIPT_NAME = "pvr-init"
249 INITSCRIPT_PARAMS = "start 30 5 2 . stop 40 0 1 6 ."
250
251 pkg_preinst_${PN}_prepend() {
252 rm -f /etc/powervr-esrev
253 rm -f /etc/powervr-kmodver
254 }
255
256 # Append to update-rc.d postinst
257 pkg_postinst_${PN}_prepend() {
258 ln -sf /usr/lib/libXdmcp.so.6.0.0 /usr/lib/libXdmcp.so.0 
259 ln -sf /usr/lib/libXau.so.6.0.0 /usr/lib/libXau.so.0
260 }