Magellan Linux

Annotation of /smage/branches/alx07x-stable/core/mesa/mesa-19.0.7-r1.smage2

Parent Directory Parent Directory | Revision Log Revision Log


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