Magellan Linux

Annotation of /smage/trunk/core/mesa/mesa-10.4.6-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7677 - (hide annotations) (download)
Wed Sep 23 15:11:45 2015 UTC (8 years, 8 months ago) by niro
File size: 26276 byte(s)
-added llvm-3.6 build fix
1 niro 7675 # $Id$
2    
3     PNAME="mesa"
4     PVER="10.4.6"
5     PBUILD="r1"
6    
7     SPLIT_PACKAGES="mesa mesa-xa-tracker mesa-dev"
8    
9     PCAT="media-libs"
10     HOMEPAGE="http://mesa3d.sourceforge.net/"
11    
12     # hardcoded llvm version for libxatracker
13     LLVM_PVER="3.6.2"
14    
15     MESA_DEPEND=">= dev-libs/expat-2.1
16     >= dev-libs/libffi-3.2
17     >= x11-libs/libX11-1.6
18     >= x11-libs/libXext-1.3
19     >= x11-libs/libXxf86vm-1.1
20     >= x11-libs/libXi-1.7
21     >= x11-libs/libXmu-1.1
22     >= x11-libs/libdrm-2.4.61
23     >= x11-libs/libICE-1
24     >= x11-base/opengl-update-2.3
25     >= x11-libs/libxcb-1.11
26     >= x11-libs/libXfixes-5
27     >= x11-libs/libXdamage-1
28     >= x11-libs/libxshmfence-1.1
29     >= sys-libs/libstdc++-5.1
30     >= sys-fs/libudev-220
31     >= dev-libs/openssl-1.0.2"
32     #>= x11-libs/libXvMC-1
33     # >= x11-libs/libvdpau-1.1
34     # >= x11-libs/libva-1.5
35    
36     XA_DEPEND=">= sys-libs/llvm-libs-${LLVM_PVER}"
37    
38     MESA_PROGS_DEPEND=">= virtual/glut"
39    
40     # mesa-dev runtime deps
41     MESA_DEV_DEPEND=">= dev-libs/expat-dev-2.1
42     >= dev-libs/libffi-dev-3.2
43     >= x11-libs/libX11-dev-1.6
44     >= x11-libs/libXext-dev-1.3
45     >= x11-libs/libXxf86vm-dev-1.1
46     >= x11-libs/libXi-dev-1.7
47     >= x11-libs/libXmu-dev-1.1
48     >= x11-libs/libdrm-dev-2.4.59
49     >= x11-libs/libICE-dev-1
50     >= x11-libs/libxcb-dev-1.11
51     >= x11-libs/libXfixes-dev-5
52     >= x11-libs/libXdamage-dev-1
53     >= x11-libs/libxshmfence-dev-1.1
54     >= sys-libs/libstdc++-dev-5.1
55     >= sys-fs/libudev-dev-220
56     >= dev-libs/openssl-dev-1.0.2"
57    
58     SDEPEND="${MESA_DEPEND}
59     ${MESA_PROGS_DEPEND}
60     >= dev-util/pkgconfig-0.25
61     >= x11-misc/makedepend-1
62     >= x11-libs/libXxf86vm-1.1
63     >= x11-proto/glproto-1.4.17
64     >= x11-proto/xf86driproto-2.1
65     >= x11-proto/dri2proto-2.8
66     >= x11-proto/dri3proto-1
67     >= x11-proto/presentproto-1.0
68     >= dev-lang/python-2.7
69     >= sys-dev/llvm-${LLVM_PVER}
70     ${MESA_DEV_DEPEND}"
71    
72     # must be set before the include of multilib!
73     EMUL_LINUX_32=true
74     sminclude xorg mtools multilib cleanutils
75     msetfeature "!check"
76    
77     # must be set *after* the include of xorg!
78     SRCFILE="MesaLib-${PVER/_/-}.tar.bz2"
79     # libs SRCDIR
80     SRCDIR="${BUILDDIR}/Mesa-${PVER/_/-}"
81    
82     # known drivers:
83     # dri: dri-swrast,dri-i915,dri-i965,dri-r200,dri-radeon,dri-i810,dri-mach64,dri-mga,
84     # dri-r128,dri-r300,dri-r600,dri-savage,dri-sis,dri-tdfx,dri-unichrome
85     # gallium: gallium-i915,gallium-i965,gallium-r300,gallium-r600,gallium-vmwgfx,gallium-swrast,gallium-nouveau, gallium-radeonsi
86     MESA_DRIVERS="dri-swrast,dri-i915,dri-i965,dri-r200,dri-radeon,dri-nouveau"
87     MESA_DRIVERS+=","
88     MESA_DRIVERS+="gallium-i915,gallium-nouveau,gallium-r300,gallium-r600,gallium-radeonsi,gallium-vmwgfx,gallium-swrast"
89    
90     # helper functions
91     driver_enabled()
92     {
93     local driver="$1"
94    
95     if [[ ${MESA_DRIVERS//${driver}} != ${MESA_DRIVERS} ]]
96     then
97     return 0
98     else
99     return 1
100     fi
101     }
102    
103     add_dri_driver()
104     {
105     local driver="$1"
106    
107     if [[ -z ${MESA_DRI_DRIVERS} ]]
108     then
109     MESA_DRI_DRIVERS="${driver}"
110     elif [[ ${MESA_DRI_DRIVERS//${driver}} = ${MESA_DRI_DRIVERS} ]]
111     then
112     MESA_DRI_DRIVERS+=",${driver}"
113     fi
114     }
115    
116     add_gallium_driver()
117     {
118     local driver="$1"
119    
120     if [[ -z ${MESA_GALLIUM_DRIVERS} ]]
121     then
122     MESA_GALLIUM_DRIVERS="${driver}"
123     elif [[ ${MESA_GALLIUM_DRIVERS//${driver}} = ${MESA_GALLIUM_DRIVERS} ]]
124     then
125     MESA_GALLIUM_DRIVERS+=",${driver}"
126     fi
127     }
128    
129     install_dri_driver()
130     {
131     local driver="$1"
132     local dri_drivers
133     local i
134    
135     case ${driver} in
136     nouveau) dri_drivers="nouveau_vieux_dri.so" ;;
137     *) dri_drivers="${driver}_dri.so" ;;
138     esac
139    
140     mmake -C src/mesa/drivers/dri DESTDIR=${BINDIR} install || die
141     zapmost ${BINDIR} \
142     $(for i in ${dri_drivers}; do echo "usr/$(mlibdir)/dri/${i}"; done) \
143     $([[ $(mlibdir) != lib ]] && for i in ${dri_drivers}; do echo "usr/lib/dri/${i}"; done) \
144     || die
145     }
146    
147     install_gallium_driver()
148     {
149     local driver="$1"
150     local dri_drivers
151    
152     case ${driver} in
153     # honor kms-swrast
154     swrast) dri_drivers="swrast_dri.so kms_swrast_dri.so" ;;
155     *) dri_drivers="${driver}_dri.so" ;;
156     esac
157    
158     mmake -C src/gallium/targets/dri DESTDIR=${BINDIR} install || die
159     zapmost ${BINDIR} \
160     $(for i in ${dri_drivers}; do echo "usr/$(mlibdir)/dri/${i}"; done) \
161     $([[ $(mlibdir) != lib ]] && for i in ${dri_drivers}; do echo "usr/lib/dri/${i}"; done) \
162     || die
163     }
164    
165     install_gallium_pipe_driver()
166     {
167     local driver="$1"
168    
169     # prereq - libllvmradeon${PVER}.so is needed to link the pipes
170     mmake -C src/gallium/drivers/radeon DESTDIR=${BINDIR} install || die
171    
172     mmake -C src/gallium/targets/pipe-loader DESTDIR=${BINDIR} install || die
173     zapmost ${BINDIR}/usr/$(mlibdir)/gallium-pipe pipe_${driver}.so || die
174     if [[ $(mlibdir) != lib ]]
175     then
176     zapmost ${BINDIR}/usr/lib/gallium-pipe pipe_${driver}.so || die
177     fi
178    
179     # remove prereq libs
180     mmake -C src/gallium/drivers/radeon DESTDIR=${BINDIR} uninstall || die
181     }
182    
183     install_gallium_vdpau_driver()
184     {
185     local driver="$1"
186    
187     mmake -C src/gallium/targets/vdpau DESTDIR=${BINDIR} install || die
188     zapmost ${BINDIR}/usr/$(mlibdir)/vdpau libvdpau_${driver}.* || die
189     if [[ $(mlibdir) != lib ]]
190     then
191     zapmost ${BINDIR}/usr/lib/vdpau libvdpau_${driver}.* || die
192     fi
193     }
194    
195     # setup_dynamic_dri $impl
196     # impl may be classic or gallium atm
197     setup_dynamic_dri()
198     {
199     local impl="$1"
200     local i
201     local abi
202    
203     [[ -z ${impl} ]] && die "missing dri implementation!"
204     case ${impl} in
205     classic|gallium) ;;
206     *) die "unkown dri implementation '${impl}'!" ;;
207     esac
208    
209     echo "settin up dynamic dri for a '${impl} implementation..."
210     if [[ -z ${MULTILIB_ABIS} ]]
211     then
212     minstalldir /usr/$(mlibdir)/mesa/${impl} || die
213     for i in ${BINDIR}/usr/$(mlibdir)/dri/*_dri.so
214     do
215     echo -n " processing ${i}:"
216     if [ -f ${i} -o -L ${i} ]
217     then
218     echo -n " moving"
219     mv -vf ${i} ${BINDIR}/usr/$(mlibdir)/mesa/${impl} || die "moving ${i}"
220     fi
221     done
222     else
223     for abi in ${MULTILIB_ABIS}
224     do
225     [[ ${abi} = m32 ]] && ABI_LIBDIR="lib"
226     [[ ${abi} = m64 ]] && ABI_LIBDIR="lib64"
227    
228     minstalldir /usr/$(mlibdir)/mesa/${impl} || die
229     for i in ${BINDIR}/usr/$(mlibdir)/dri/*_dri.so
230     do
231     echo -n " processing ${i}"
232     if [ -f ${i} -o -L ${i} ]
233     then
234     echo -n " moving"
235     mv -vf ${i} ${BINDIR}/usr/$(mlibdir)/mesa/${impl} || die "moving ${i}"
236     fi
237     echo " done"
238     done
239     done
240     fi
241     }
242    
243     SRC_URI=(
244     ftp://ftp.freedesktop.org/pub/mesa/${PVER%_*}/${SRCFILE}
245     mirror://${PNAME}/${SRCFILE}
246 niro 7676 mirror://${PNAME}/${PNAME}-${PVER}-loader-fstat-fix-implicit-function-declaration.patch
247 niro 7677 mirror://${PNAME}/${PNAME}-${PVER}-llvm36.patch
248 niro 7675 )
249    
250     #UP2DATE="updatecmd ftp://ftp.freedesktop.org/pub/mesa/current | highesttarball xz"
251     UP2DATE="updatecmd ftp://ftp.freedesktop.org/pub/mesa/ | grep '/[0-9].*' | sed 's:.*/\(.*\)/:\1:' | upsort_pipe"
252    
253     split_info_mesa()
254     {
255     DESCRIPTION="Mesa3D OpenGL graphics library."
256     DEPEND="${MESA_DEPEND}"
257    
258     PROVIDE="virtual/opengl"
259     }
260    
261     split_info_mesa-xa-tracker()
262     {
263     DESCRIPTION="Mesa XA state tracker."
264     DEPEND="${XA_DEPEND}"
265     }
266    
267     split_info_mesa-dev()
268     {
269     DESCRIPTION="Dev package for mesa"
270     DEPEND="== media-libs/mesa-${PVER}
271     == media-libs/mesa-xa-tracker-${PVER}
272     ${MESA_DEV_DEPEND}"
273    
274     PROVIDE="virtual/opengl-dev"
275     }
276    
277     if driver_enabled dri-swrast
278     then
279     SPLIT_PACKAGES+=" mesa-dri-swrast"
280     add_dri_driver swrast
281    
282     split_info_mesa-dri-swrast()
283     {
284     DESCRIPTION="Mesa Software Raster DRI driver."
285     DEPEND="== ${PCAT}/mesa-${PVER}"
286     }
287     fi
288    
289     if driver_enabled dri-i810
290     then
291     SPLIT_PACKAGES+=" mesa-dri-i810"
292     add_dri_driver i810
293    
294     split_info_mesa-dri-i810()
295     {
296     DESCRIPTION="Mesa Intel i810 DRI driver."
297     DEPEND="== ${PCAT}/mesa-${PVER}"
298     }
299     fi
300    
301     if driver_enabled dri-i915
302     then
303     SPLIT_PACKAGES+=" mesa-dri-i915"
304     add_dri_driver i915
305    
306     split_info_mesa-dri-i915()
307     {
308     DESCRIPTION="Mesa Intel i915 DRI driver."
309     DEPEND="== ${PCAT}/mesa-${PVER}"
310     }
311     fi
312    
313     if driver_enabled dri-i965
314     then
315     SPLIT_PACKAGES+=" mesa-dri-i965"
316     add_dri_driver i965
317    
318     split_info_mesa-dri-i965()
319     {
320     DESCRIPTION="Mesa Intel i965 DRI driver."
321     DEPEND="== ${PCAT}/mesa-${PVER}"
322     }
323     fi
324    
325     if driver_enabled dri-mach64
326     then
327     SPLIT_PACKAGES+=" mesa-dri-mach64"
328     add_dri_driver mach64
329    
330     split_info_mesa-dri-mach64()
331     {
332     DESCRIPTION="Mesa ATI mach64 DRI driver."
333     DEPEND="== ${PCAT}/mesa-${PVER}"
334     }
335     fi
336    
337     if driver_enabled dri-mga
338     then
339     SPLIT_PACKAGES+=" mesa-dri-mga"
340     add_dri_driver mga
341    
342     split_info_mesa-dri-mga()
343     {
344     DESCRIPTION="Mesa Matrox mga DRI driver."
345     DEPEND="== ${PCAT}/mesa-${PVER}"
346     }
347     fi
348    
349     if driver_enabled dri-nouveau
350     then
351     SPLIT_PACKAGES+=" mesa-dri-nouveau"
352     add_dri_driver nouveau
353    
354     split_info_mesa-dri-nouveau()
355     {
356     DESCRIPTION="Mesa Nvidia Nouveau DRI driver."
357     DEPEND="== ${PCAT}/mesa-${PVER}"
358     }
359     fi
360    
361     if driver_enabled dri-r128
362     then
363     SPLIT_PACKAGES+=" mesa-dri-r128"
364     add_dri_driver r128
365    
366     split_info_mesa-dri-r128()
367     {
368     DESCRIPTION="Mesa ATI Rage128 DRI driver."
369     DEPEND="== ${PCAT}/mesa-${PVER}"
370     }
371     fi
372    
373     if driver_enabled dri-r200
374     then
375     SPLIT_PACKAGES+=" mesa-dri-r200"
376     add_dri_driver r200
377    
378     split_info_mesa-dri-r200()
379     {
380     DESCRIPTION="Mesa ATI Radeon r200 DRI driver."
381     DEPEND="== ${PCAT}/mesa-${PVER}"
382     }
383     fi
384    
385     if driver_enabled dri-r300
386     then
387     SPLIT_PACKAGES+=" mesa-dri-r300"
388     add_dri_driver r300
389    
390     split_info_mesa-dri-r300()
391     {
392     DESCRIPTION="Mesa ATI Radeon r300 DRI driver."
393     DEPEND="== ${PCAT}/mesa-${PVER}"
394     }
395     fi
396    
397     if driver_enabled dri-r600
398     then
399     SPLIT_PACKAGES+=" mesa-dri-r600"
400     add_dri_driver r600
401    
402     split_info_mesa-dri-r600()
403     {
404     DESCRIPTION="Mesa ATI Radeon r600 DRI driver."
405     DEPEND="== ${PCAT}/mesa-${PVER}"
406     }
407     fi
408    
409     if driver_enabled dri-radeon
410     then
411     SPLIT_PACKAGES+=" mesa-dri-radeon"
412     add_dri_driver radeon
413    
414     split_info_mesa-dri-radeon()
415     {
416     DESCRIPTION="Mesa ATI Radeon generic DRI driver."
417     DEPEND="== ${PCAT}/mesa-${PVER}"
418     }
419     fi
420    
421     if driver_enabled dri-savage
422     then
423     SPLIT_PACKAGES+=" mesa-dri-savage"
424     add_dri_driver savage
425    
426     split_info_mesa-dri-savage()
427     {
428     DESCRIPTION="Mesa S3 Savage DRI driver."
429     DEPEND="== ${PCAT}/mesa-${PVER}"
430     }
431     fi
432    
433     if driver_enabled dri-sis
434     then
435     SPLIT_PACKAGES+=" mesa-dri-sis"
436     add_dri_driver sis
437    
438     split_info_mesa-dri-sis()
439     {
440     DESCRIPTION="Mesa SIS generic DRI driver."
441     DEPEND="== ${PCAT}/mesa-${PVER}"
442     }
443     fi
444    
445     if driver_enabled dri-tdfx
446     then
447     SPLIT_PACKAGES+=" mesa-dri-tdfx"
448     add_dri_driver tdfx
449    
450     split_info_mesa-dri-tdfx()
451     {
452     DESCRIPTION="Mesa 3DFX Voodoo DRI driver."
453     DEPEND="== ${PCAT}/mesa-${PVER}"
454     }
455     fi
456    
457     if driver_enabled dri-unichrome
458     then
459     SPLIT_PACKAGES+=" mesa-dri-unichrome"
460     add_dri_driver unichrome
461    
462     split_info_mesa-dri-unichrome()
463     {
464     DESCRIPTION="Mesa VIA Chrome DRI driver."
465     DEPEND="== ${PCAT}/mesa-${PVER}"
466     }
467     fi
468    
469     if driver_enabled gallium-i915
470     then
471     SPLIT_PACKAGES+=" mesa-gallium-i915"
472     add_gallium_driver i915
473    
474     split_info_mesa-gallium-i915()
475     {
476     DESCRIPTION="Mesa Intel i915 Gallium driver."
477     DEPEND="== ${PCAT}/mesa-${PVER}"
478     }
479     fi
480    
481     if driver_enabled gallium-i965
482     then
483     SPLIT_PACKAGES+=" mesa-gallium-i965"
484     add_gallium_driver i965
485    
486     split_info_mesa-gallium-i965()
487     {
488     DESCRIPTION="Mesa Intel i965 Gallium driver."
489     DEPEND="== ${PCAT}/mesa-${PVER}"
490     }
491     fi
492    
493     if driver_enabled gallium-nouveau
494     then
495     SPLIT_PACKAGES+=" mesa-gallium-nouveau"
496     add_gallium_driver nouveau
497    
498     split_info_mesa-gallium-nouveau()
499     {
500     DESCRIPTION="Mesa Nvidia Nouveau Gallium driver."
501     DEPEND="== ${PCAT}/mesa-${PVER}"
502     }
503     fi
504    
505     if driver_enabled gallium-r300
506     then
507     SPLIT_PACKAGES+=" mesa-gallium-r300"
508     add_gallium_driver r300
509    
510     split_info_mesa-gallium-r300()
511     {
512     DESCRIPTION="Mesa Ati Radeon r300 Gallium driver."
513     DEPEND="== ${PCAT}/mesa-${PVER}"
514     }
515     fi
516    
517     if driver_enabled gallium-r600
518     then
519     SPLIT_PACKAGES+=" mesa-gallium-r600"
520     add_gallium_driver r600
521    
522     split_info_mesa-gallium-r600()
523     {
524     DESCRIPTION="Mesa Ati Radeon r600 Gallium driver."
525     DEPEND="== ${PCAT}/mesa-${PVER}"
526     }
527     fi
528    
529     if driver_enabled gallium-radeonsi
530     then
531     SPLIT_PACKAGES+=" mesa-gallium-radeonsi"
532     add_gallium_driver radeonsi
533    
534     split_info_mesa-gallium-radeonsi()
535     {
536     DESCRIPTION="Mesa Ati Radeon radeonsi Gallium driver."
537     DEPEND="== ${PCAT}/mesa-${PVER}"
538     }
539     fi
540    
541     if driver_enabled gallium-swrast
542     then
543     SPLIT_PACKAGES+=" mesa-gallium-swrast"
544     add_gallium_driver swrast
545    
546     split_info_mesa-gallium-swrast()
547     {
548     DESCRIPTION="Mesa Software Raster Gallium driver."
549     DEPEND="== ${PCAT}/mesa-${PVER}"
550     }
551     fi
552    
553     if driver_enabled gallium-vmwgfx
554     then
555     SPLIT_PACKAGES+=" mesa-gallium-vmwgfx"
556     add_gallium_driver svga
557    
558     split_info_mesa-gallium-vmwgfx()
559     {
560     DESCRIPTION="Mesa Vmware generic Gallium driver."
561     DEPEND="== ${PCAT}/mesa-${PVER}"
562     }
563     fi
564    
565     src_prepare()
566     {
567     munpack ${SRCFILE} || die
568    
569 niro 7676 # ftbfs fix
570     # see commit: http://cgit.freedesktop.org/mesa/mesa/commit/src/loader/loader.c?id=771cd266b9d00bdcf2cf7acaa3c8363c358d7478
571     mpatch ${PNAME}-${PVER}-loader-fstat-fix-implicit-function-declaration.patch || die
572    
573 niro 7677 # llvm-3.6 fix
574     mpatch ${PNAME}-${PVER}-llvm36.patch || die
575    
576 niro 7675 # no debug code in the drives (gentoo)
577     all-abis 'find src/mesa/drivers/dri -name *.[hc] -exec egrep -l "\#define\W+DO_DEBUG\W+1" {} \; | xargs --no-run-if-empty sed -i -re "s/\#define\W+DO_DEBUG\W+1/\#define DO_DEBUG 0/" ;'
578    
579     # get rid of glut includes
580     all-abis rm -f include/GL/glut*h || die
581    
582     # fix an error in the libva detection
583     # all-abis 'sed -i "s:libva = 0.31.1:libva >= 0.31.1:" configure.ac' || die
584    
585     mautoreconf || die
586     }
587    
588     src_compile()
589     {
590     # build without rtti and exeptions, fixes issues with llvm as well
591     export CXXFLAGS="${CXXFLAGS} -fno-rtti -fno-exceptions -DNDEBUG"
592    
593     # texture-float has patent issues in non european contries
594     # disable this feature if this legal concern is affected
595     local myconf="--enable-texture-float"
596    
597     mconfigure \
598     --with-dri-driverdir=/usr/'$(mlibdir)'/dri \
599     --with-dri-drivers=${MESA_DRI_DRIVERS} \
600     --with-gallium-drivers=${MESA_GALLIUM_DRIVERS} \
601     --with-egl-platforms=x11,drm \
602     --disable-debug \
603     --enable-glx-tls \
604     --enable-asm \
605     --enable-shared-glapi \
606     --enable-egl \
607     --enable-gles1 \
608     --enable-gles2 \
609     --enable-gbm \
610     --enable-osmesa \
611     --enable-xa \
612     --enable-gallium-egl \
613     --enable-gallium-llvm \
614     --disable-vdpau \
615     --enable-llvm-shared-libs \
616     ${myconf} \
617     || die
618     # --enable-va \
619    
620     # # only build software renderer on multilib arches for 32Bit
621     # if [[ ${ARCH} = x86_64 ]]
622     # then
623     # only-m32 "echo 'DRI_DIRS =' >> configs/autoconf" || die
624     # fi
625    
626     mmake -j1 || die
627     }
628    
629     src_install_mesa()
630     {
631     mmake DESTDIR=${BINDIR} install || die
632    
633     # remove all la files
634     find ${BINDIR} -name \*.la | xargs rm -fv
635    
636     # setup included for dynamic opengl
637     # only target arch needed on multilib systems
638     for abi in ${MULTILIB_ABIS}
639     do
640     [[ ${abi} = m32 ]] && ABI_LIBDIR="lib"
641     [[ ${abi} = m64 ]] && ABI_LIBDIR="lib64"
642     cd ${SRCDIR}-${abi}
643    
644     # setup dynamic opengl
645     minstalldir /usr/$(mlibdir)/opengl/xorg/lib || die
646     minstalldir /usr/$(mlibdir)/opengl/xorg/extensions || die
647    
648     local x
649     for x in ${BINDIR}/usr/$(mlibdir)/lib{EGL,GL*,OpenVG}.so.*
650     do
651     if [ -f ${x} -o -L ${x} ]
652     then
653     mv -fv ${x} ${BINDIR}/usr/$(mlibdir)/opengl/xorg/lib || die "${x}"
654     fi
655     done
656    
657     # export LIBGL_DRIVER_PATH location.
658     # we are using '/usr/lib/dri' as hardcoded location.
659     # but nvidia and ati are using '/usr/$(mlibdir)/xorg/modules/dri'
660     # LIBGL_DRIVER_PATH overwrites the hardcoded location and
661     # if nvidia or ati driver are installed
662     # the dri modules will never be found by libGL
663     # use "LIBGL_DEBUG=verbose glxinfo" to check this issue
664     minstalldir /etc/env.d || die
665     MCONFIG=/etc/env.d/09mesa-${abi}
666     mclearconfig || die
667     maddconfig "LIBGL_DRIVERS_PATH=/usr/$(mlibdir)/dri" || die
668    
669     # remove dri-drivers, they are in extra packages
670     rm -rv ${BINDIR}/usr/$(mlibdir)/dri/*_dri.so || die
671     # remove vdpau-drivers, they are in extra packages
672     # rm -rv ${BINDIR}/usr/$(mlibdir)/vdpau || die
673     # remove gbm-pipes, they are in extra packages
674     # rm -rv ${BINDIR}/usr/$(mlibdir)/gallium-pipe/pipe_*.so || die
675     done
676    
677     zapmost ${BINDIR} \
678     usr/$(mlibdir)/*.so.* \
679     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/*.so.*') \
680     usr/$(mlibdir)/dri \
681     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/dri') \
682     usr/$(mlibdir)/opengl \
683     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/opengl') \
684     || die
685     # usr/$(mlibdir)/egl \
686     # $([[ $(mlibdir) != lib ]] && echo 'usr/lib/egl')
687    
688     # remove xa-tracker
689     mdelete /usr/$(mlibdir)/libxatracker.so.\* || die
690     if [[ $(mlibdir) != lib ]]
691     then
692     mdelete /usr/lib/libxatracker.so.\* || die
693     fi
694     }
695    
696     src_install_mesa-xa-tracker()
697     {
698     mmake DESTDIR=${BINDIR} install || die
699    
700     zapmost ${BINDIR} \
701     usr/$(mlibdir)/libxatracker.so.* \
702     $([[ $(mlibdir) != lib ]] && echo 'usr/lib/libxatracker.so.*') \
703     || die
704     }
705    
706     src_install_mesa-dev()
707     {
708     mmake DESTDIR=${BINDIR} install || die
709    
710     # remove all la files
711     find ${BINDIR} -name \*.la | xargs rm -fv
712    
713     # setup included for dynamic opengl
714     # only target arch needed on multilib systems
715     minstalldir /usr/$(mlibdir)/opengl/xorg/include/GL || die
716     for x in ${BINDIR}/usr/include/GL/{gl.h,glx.h,glext.h,glxext.h}
717     do
718     if [ -f ${x} -o -L ${x} ]
719     then
720     mv -fv ${x} ${BINDIR}/usr/$(mlibdir)/opengl/xorg/include/GL || die "${x}"
721     fi
722     done
723     for x in ${BINDIR}/usr/include/{EGL,GLES*,VG,KHR}
724     do
725     if [ -d ${x} ]
726     then
727     mv -fv ${x} ${BINDIR}/usr/$(mlibdir)/opengl/xorg/include || die "${x}"
728     fi
729     done
730    
731     for abi in ${MULTILIB_ABIS}
732     do
733     [[ ${abi} = m32 ]] && ABI_LIBDIR="lib"
734     [[ ${abi} = m64 ]] && ABI_LIBDIR="lib64"
735     cd ${SRCDIR}-${abi}
736    
737     # setup dynamic opengl
738     minstalldir /usr/$(mlibdir)/opengl/xorg/lib || die
739     minstalldir /usr/$(mlibdir)/opengl/xorg/extensions || die
740    
741     local x
742     for x in ${BINDIR}/usr/$(mlibdir)/lib{EGL,GL*,OpenVG}.{la,a,so}
743     do
744     if [ -f ${x} -o -L ${x} ]
745     then
746     mv -fv ${x} ${BINDIR}/usr/$(mlibdir)/opengl/xorg/lib || die "${x}"
747     fi
748     done
749    
750     # remove dri-drivers, they are in extra packages
751     rm -rv ${BINDIR}/usr/$(mlibdir)/dri/*_dri.so || die
752     # remove vdpau-drivers, they are in extra packages
753     # rm -rv ${BINDIR}/usr/$(mlibdir)/vdpau || die
754     # remove gbm-pipes, they are in extra packages
755     # rm -rv ${BINDIR}/usr/$(mlibdir)/gallium-pipe/pipe_*.so || die
756     done
757    
758     # includes in mesa package
759     rm -r ${BINDIR}/usr/$(mlibdir)/*.so.* || die
760     mdelete -r /usr/$(mlibdir)/dri || die
761     # mdelete -r /usr/$(mlibdir)/egl || die
762     if [[ $(mlibdir) != lib ]]
763     then
764     rm -r ${BINDIR}/usr/lib/*.so.* || die
765     mdelete -r /usr/lib/dri || die
766     # mdelete -r /usr/lib/egl || die
767     fi
768     }
769    
770     if driver_enabled dri-swrast
771     then
772     src_install_mesa-dri-swrast()
773     {
774     install_dri_driver swrast || die
775     setup_dynamic_dri classic || die
776     }
777     fi
778    
779     if driver_enabled dri-i810
780     then
781     src_install_mesa-dri-i810()
782     {
783     install_dri_driver i810 || die
784     setup_dynamic_dri classic || die
785     }
786     fi
787    
788     if driver_enabled dri-i915
789     then
790     src_install_mesa-dri-i915()
791     {
792     install_dri_driver i915 || die
793     setup_dynamic_dri classic || die
794     }
795     fi
796    
797     if driver_enabled dri-i965
798     then
799     src_install_mesa-dri-i965()
800     {
801     install_dri_driver i965 || die
802     setup_dynamic_dri classic || die
803     }
804     fi
805    
806     if driver_enabled dri-mach64
807     then
808     src_install_mesa-dri-mach64()
809     {
810     install_dri_driver mach64 || die
811     setup_dynamic_dri classic || die
812     }
813     fi
814    
815     if driver_enabled dri-mga
816     then
817     src_install_mesa-dri-mga()
818     {
819     install_dri_driver mga || die
820     setup_dynamic_dri classic || die
821     }
822     fi
823    
824     if driver_enabled dri-r128
825     then
826     src_install_mesa-dri-r128()
827     {
828     install_dri_driver r128 || die
829     setup_dynamic_dri classic || die
830     }
831     fi
832    
833     if driver_enabled dri-nouveau
834     then
835     src_install_mesa-dri-nouveau()
836     {
837     install_dri_driver nouveau || die
838     setup_dynamic_dri classic || die
839     }
840     fi
841    
842     if driver_enabled dri-r200
843     then
844     src_install_mesa-dri-r200()
845     {
846     install_dri_driver r200 || die
847     setup_dynamic_dri classic || die
848     }
849     fi
850    
851     if driver_enabled dri-r300
852     then
853     src_install_mesa-dri-r300()
854     {
855     install_dri_driver r300 || die
856     setup_dynamic_dri classic || die
857     }
858     fi
859    
860     if driver_enabled dri-r600
861     then
862     src_install_mesa-dri-r600()
863     {
864     install_dri_driver r600 || die
865     setup_dynamic_dri classic || die
866     }
867     fi
868    
869     if driver_enabled dri-radeon
870     then
871     src_install_mesa-dri-radeon()
872     {
873     install_dri_driver radeon || die
874     setup_dynamic_dri classic || die
875     }
876     fi
877    
878     if driver_enabled dri-savage
879     then
880     src_install_mesa-dri-savage()
881     {
882     install_dri_driver savage || die
883     setup_dynamic_dri classic || die
884     }
885     fi
886    
887     if driver_enabled dri-sis
888     then
889     src_install_mesa-dri-sis()
890     {
891     install_dri_driver sis || die
892     setup_dynamic_dri classic || die
893     }
894     fi
895    
896     if driver_enabled dri-tdfx
897     then
898     src_install_mesa-dri-tdfx()
899     {
900     install_dri_driver tdfx || die
901     setup_dynamic_dri classic || die
902     }
903     fi
904    
905     if driver_enabled dri-unichrome
906     then
907     src_install_mesa-dri-unichrome()
908     {
909     install_dri_driver unichrome || die
910     setup_dynamic_dri classic || die
911     }
912     fi
913    
914     if driver_enabled gallium-i915
915     then
916     src_install_mesa-gallium-i915()
917     {
918     install_gallium_driver i915 || die
919     setup_dynamic_dri gallium || die
920    
921     # gbm
922     # install_gallium_pipe_driver i915 || die
923     }
924     fi
925    
926     if driver_enabled gallium-i965
927     then
928     src_install_mesa-gallium-i965()
929     {
930     install_gallium_driver i965 || die
931     setup_dynamic_dri gallium || die
932    
933     # gbm
934     # install_gallium_pipe_driver i965 || die
935     }
936     fi
937    
938     if driver_enabled gallium-nouveau
939     then
940     src_install_mesa-gallium-nouveau()
941     {
942     install_gallium_driver nouveau || die
943     setup_dynamic_dri gallium || die
944    
945     # vdpau
946     # install_gallium_vdpau_driver nouveau || die
947    
948     # gbm
949     # install_gallium_pipe_driver nouveau || die
950     }
951     fi
952    
953     if driver_enabled gallium-r300
954     then
955     src_install_mesa-gallium-r300()
956     {
957     install_gallium_driver r300 || die
958     setup_dynamic_dri gallium || die
959    
960     # vdpau
961     # install_gallium_vdpau_driver r300 || die
962    
963     # gbm
964     # install_gallium_pipe_driver r300 || die
965     }
966     fi
967    
968     if driver_enabled gallium-r600
969     then
970     src_install_mesa-gallium-r600()
971     {
972     install_gallium_driver r600 || die
973     setup_dynamic_dri gallium || die
974    
975     # vdpau
976     # install_gallium_vdpau_driver r600 || die
977    
978     # gbm
979     # install_gallium_pipe_driver r600 || die
980     }
981     fi
982    
983     if driver_enabled gallium-radeonsi
984     then
985     src_install_mesa-gallium-radeonsi()
986     {
987     install_gallium_driver radeonsi || die
988     setup_dynamic_dri gallium || die
989    
990     # vdpau
991     # install_gallium_vdpau_driver radeonsi || die
992    
993     # gbm
994     # install_gallium_pipe_driver radeonsi || die
995     }
996     fi
997    
998     if driver_enabled gallium-swrast
999     then
1000     src_install_mesa-gallium-swrast()
1001     {
1002     install_gallium_driver swrast || die
1003     setup_dynamic_dri gallium || die
1004    
1005     # vdpau
1006     # install_gallium_vdpau_driver softpipe || die
1007    
1008     # gbm
1009     # install_gallium_pipe_driver swrast || die
1010     }
1011     fi
1012    
1013     if driver_enabled gallium-vmwgfx
1014     then
1015     src_install_mesa-gallium-vmwgfx()
1016     {
1017     install_gallium_driver vmwgfx || die
1018     setup_dynamic_dri gallium || die
1019    
1020     # gbm
1021     # install_gallium_pipe_driver vmwgfx || die
1022     }
1023     fi
1024    
1025     # setup_dynamic_dri $impl
1026     # impl may be classic or gallium atm
1027     setup_dynamic_dri()
1028     {
1029     local impl="$1"
1030     local i
1031     local abi
1032    
1033     [[ -z ${impl} ]] && die "missing dri implementation!"
1034     case ${impl} in
1035     classic|gallium) ;;
1036     *) die "unkown dri implementation '${impl}'!" ;;
1037     esac
1038    
1039     echo "settin up dynamic dri for a '${impl} implementation..."
1040     if [[ -z ${MULTILIB_ABIS} ]]
1041     then
1042     minstalldir /usr/$(mlibdir)/mesa/${impl} || die
1043     for i in ${BINDIR}/usr/$(mlibdir)/dri/*_dri.so
1044     do
1045     echo -n " processing ${i}:"
1046     if [ -f ${i} -o -L ${i} ]
1047     then
1048     echo -n " moving"
1049     mv -vf ${i} ${BINDIR}/usr/$(mlibdir)/mesa/${impl} || die "moving ${i}"
1050     fi
1051     done
1052     else
1053     for abi in ${MULTILIB_ABIS}
1054     do
1055     [[ ${abi} = m32 ]] && ABI_LIBDIR="lib"
1056     [[ ${abi} = m64 ]] && ABI_LIBDIR="lib64"
1057    
1058     minstalldir /usr/$(mlibdir)/mesa/${impl} || die
1059     for i in ${BINDIR}/usr/$(mlibdir)/dri/*_dri.so
1060     do
1061     echo -n " processing ${i}"
1062     if [ -f ${i} -o -L ${i} ]
1063     then
1064     echo -n " moving"
1065     mv -vf ${i} ${BINDIR}/usr/$(mlibdir)/mesa/${impl} || die "moving ${i}"
1066     fi
1067     echo " done"
1068     done
1069     done
1070     fi
1071     }
1072    
1073     postinstall_mesa()
1074     {
1075     ${MROOT}/usr/sbin/opengl-update --use-old xorg
1076     }
1077    
1078     postinstall_mesa-dev()
1079     {
1080     ${MROOT}/usr/sbin/opengl-update --use-old xorg
1081     }
1082    
1083     if driver_enabled dri-swrast
1084     then
1085     postinstall_mesa-dri-swrast()
1086     {
1087     ${MROOT}/usr/sbin/dri-update --use-old classic
1088     }
1089     fi
1090    
1091     if driver_enabled dri-i810
1092     then
1093     postinstall_mesa-dri-i810()
1094     {
1095     ${MROOT}/usr/sbin/dri-update --use-old classic
1096     }
1097     fi
1098    
1099     if driver_enabled dri-i915
1100     then
1101     postinstall_mesa-dri-i915()
1102     {
1103     ${MROOT}/usr/sbin/dri-update --use-old classic
1104     }
1105     fi
1106    
1107     if driver_enabled dri-i965
1108     then
1109     postinstall_mesa-dri-i965()
1110     {
1111     ${MROOT}/usr/sbin/dri-update --use-old classic
1112     }
1113     fi
1114    
1115     if driver_enabled dri-mach64
1116     then
1117     postinstall_mesa-dri-mach64()
1118     {
1119     ${MROOT}/usr/sbin/dri-update --use-old classic
1120     }
1121     fi
1122    
1123     if driver_enabled dri-mga
1124     then
1125     postinstall_mesa-dri-mga()
1126     {
1127     ${MROOT}/usr/sbin/dri-update --use-old classic
1128     }
1129     fi
1130    
1131     if driver_enabled dri-nouveau
1132     then
1133     postinstall_mesa-dri-nouveau()
1134     {
1135     ${MROOT}/usr/sbin/dri-update --use-old classic
1136     }
1137     fi
1138    
1139     if driver_enabled dri-r128
1140     then
1141     postinstall_mesa-dri-r128()
1142     {
1143     ${MROOT}/usr/sbin/dri-update --use-old classic
1144     }
1145     fi
1146    
1147     if driver_enabled dri-r200
1148     then
1149     postinstall_mesa-dri-r200()
1150     {
1151     ${MROOT}/usr/sbin/dri-update --use-old classic
1152     }
1153     fi
1154    
1155     if driver_enabled dri-r300
1156     then
1157     postinstall_mesa-dri-r300()
1158     {
1159     ${MROOT}/usr/sbin/dri-update --use-old classic
1160     }
1161     fi
1162    
1163     if driver_enabled dri-r600
1164     then
1165     postinstall_mesa-dri-r600()
1166     {
1167     ${MROOT}/usr/sbin/dri-update --use-old classic
1168     }
1169     fi
1170    
1171     if driver_enabled dri-radeon
1172     then
1173     postinstall_mesa-dri-radeon()
1174     {
1175     ${MROOT}/usr/sbin/dri-update --use-old classic
1176     }
1177     fi
1178    
1179     if driver_enabled dri-savage
1180     then
1181     postinstall_mesa-dri-savage()
1182     {
1183     ${MROOT}/usr/sbin/dri-update --use-old classic
1184     }
1185     fi
1186    
1187     if driver_enabled dri-sis
1188     then
1189     postinstall_mesa-dri-sis()
1190     {
1191     ${MROOT}/usr/sbin/dri-update --use-old classic
1192     }
1193     fi
1194    
1195     if driver_enabled dri-tdfx
1196     then
1197     postinstall_mesa-dri-tdfx()
1198     {
1199     ${MROOT}/usr/sbin/dri-update --use-old classic
1200     }
1201     fi
1202    
1203     if driver_enabled dri-unichrome
1204     then
1205     postinstall_mesa-dri-unichrome()
1206     {
1207     ${MROOT}/usr/sbin/dri-update --use-old classic
1208     }
1209     fi
1210    
1211     if driver_enabled gallium-i915
1212     then
1213     postinstall_mesa-gallium-i915()
1214     {
1215     ${MROOT}/usr/sbin/dri-update --use-old gallium
1216     }
1217     fi
1218    
1219     if driver_enabled gallium-i965
1220     then
1221     postinstall_mesa-gallium-i965()
1222     {
1223     ${MROOT}/usr/sbin/dri-update --use-old gallium
1224     }
1225     fi
1226    
1227     if driver_enabled gallium-nouveau
1228     then
1229     postinstall_mesa-gallium-nouveau()
1230     {
1231     ${MROOT}/usr/sbin/dri-update --use-old gallium
1232     }
1233     fi
1234    
1235     if driver_enabled gallium-r300
1236     then
1237     postinstall_mesa-gallium-r300()
1238     {
1239     ${MROOT}/usr/sbin/dri-update --use-old gallium
1240     }
1241     fi
1242    
1243     if driver_enabled gallium-r600
1244     then
1245     postinstall_mesa-gallium-r600()
1246     {
1247     ${MROOT}/usr/sbin/dri-update --use-old gallium
1248     }
1249     fi
1250    
1251     if driver_enabled gallium-radeonsi
1252     then
1253     postinstall_mesa-gallium-radeonsi()
1254     {
1255     ${MROOT}/usr/sbin/dri-update --use-old gallium
1256     }
1257     fi
1258    
1259     if driver_enabled gallium-swrast
1260     then
1261     postinstall_mesa-gallium-swrast()
1262     {
1263     ${MROOT}/usr/sbin/dri-update --use-old gallium
1264     }
1265     fi
1266    
1267     if driver_enabled gallium-vmwgfx
1268     then
1269     postinstall_mesa-gallium-vmwgfx()
1270     {
1271     ${MROOT}/usr/sbin/dri-update --use-old gallium
1272     }
1273     fi