# $Id$ PNAME="mesa" PVER="7.11" PBUILD="r1" PCATEGORIE="media-libs" HOMEPAGE="http://mesa3d.sourceforge.net/" MESA_DEPEND=">= dev-libs/expat-2 >= x11-libs/libX11-1.4 >= x11-libs/libXext-1.3 >= x11-libs/libXxf86vm-1.1 >= x11-libs/libXi-1.4 >= x11-libs/libXmu-1.1 >= x11-libs/libdrm-2.4.27 >= x11-libs/libICE-1 >= x11-libs/libxcb-1 >= x11-libs/libXfixes-5 >= x11-libs/libXdamage-1 >= sys-libs/talloc-2" MESA_PROGS_DEPEND=">= virtual/glut" SDEPEND="${MESA_DEPEND} ${MESA_PROGS_DEPEND} >= dev-util/pkgconfig-0.25 >= x11-misc/makedepend-1 >= x11-proto/xf86vidmodeproto-2.3 >= x11-libs/libXxf86vm-1.1 >= x11-proto/glproto-1.4.12 >= x11-proto/inputproto-2 >= x11-proto/xextproto-7.2 >= x11-proto/xf86driproto-2.1 >= x11-proto/dri2proto-2.3 >= x11-proto/xcb-proto-1.6 >= x11-proto/xproto-7 >= x11-proto/fixesproto-5 >= x11-proto/damageproto-1.2 >= dev-lang/python-2.7 >= sys-dev/llvm-2.9" # must be set before the include of multilib! EMUL_LINUX_32=true sminclude xorg mtools multilib cleanutils # must be set *after* the include of xorg! SRCFILE="MesaLib-${PVER/_/-}.tar.bz2" # libs SRCDIR SRCDIR="${BUILDDIR}/Mesa-${PVER/_/-}" SPLIT_PACKAGES="mesa mesa-dev mesa-dri-i810 mesa-dri-i915 mesa-dri-i965 mesa-dri-mach64 mesa-dri-mga mesa-dri-r128 mesa-dri-r200 mesa-dri-radeon mesa-dri-savage mesa-dri-sis mesa-dri-unichrome mesa-gallium-nouveau mesa-gallium-r300 mesa-gallium-r600 mesa-gallium-swrast" #mesa-dri-swrast #mesa-dri-r300 #mesa-dri-r600 #mesa-dri-tdfx # # broken atm #mesa-gallium-vmwgfx #mesa-gallium-i915 #mesa-gallium-i965 SRC_URI=( ftp://ftp.freedesktop.org/pub/mesa/${PVER}/${SRCFILE} sourceforge://mesa3d/${SRCFILE} mirror://${PNAME}/${SRCFILE} mirror://${PNAME}/libGLU.la mirror://${PNAME}/libGL.la ) UP2DATE="updatecmd ftp://ftp.freedesktop.org/pub/mesa/current | lasttarball" split_info_mesa() { DESCRIPTION="Mesa3D OpenGL graphics library." DEPEND="${MESA_DEPEND}" PROVIDE="virtual/opengl" } split_info_mesa-dev() { DESCRIPTION="Development files for ${PCATEGORIE}/mesa-${PVER}." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } #split_info_mesa-dri-swrast() #{ # DESCRIPTION="Mesa Software Raster DRI driver." # DEPEND="== ${PCATEGORIE}/mesa-${PVER}" #} split_info_mesa-dri-i810() { DESCRIPTION="Mesa Intel i810 DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-i915() { DESCRIPTION="Mesa Intel i915 DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-i965() { DESCRIPTION="Mesa Intel i965 DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-mach64() { DESCRIPTION="Mesa ATI mach64 DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-mga() { DESCRIPTION="Mesa Matrox mga DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-r128() { DESCRIPTION="Mesa ATI Rage128 DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-r200() { DESCRIPTION="Mesa ATI Radeon r200 DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } #split_info_mesa-dri-r300() #{ # DESCRIPTION="Mesa ATI Radeon r300 DRI driver." # DEPEND="== ${PCATEGORIE}/mesa-${PVER}" #} #split_info_mesa-dri-r600() #{ # DESCRIPTION="Mesa ATI Radeon r600 DRI driver." # DEPEND="== ${PCATEGORIE}/mesa-${PVER}" #} split_info_mesa-dri-radeon() { DESCRIPTION="Mesa ATI Radeon generic DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-savage() { DESCRIPTION="Mesa S3 Savage DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-dri-sis() { DESCRIPTION="Mesa SIS generic DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } #split_info_mesa-dri-tdfx() #{ # DESCRIPTION="Mesa 3DFX Voodoo DRI driver." # DEPEND="== ${PCATEGORIE}/mesa-${PVER}" #} split_info_mesa-dri-unichrome() { DESCRIPTION="Mesa VIA Chrome DRI driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } #split_info_mesa-gallium-i915() #{ # DESCRIPTION="Mesa Intel i915 Gallium driver." # DEPEND="== ${PCATEGORIE}/mesa-${PVER}" #} #split_info_mesa-gallium-i965() #{ # DESCRIPTION="Mesa Intel i965 Gallium driver." # DEPEND="== ${PCATEGORIE}/mesa-${PVER}" #} split_info_mesa-gallium-nouveau() { DESCRIPTION="Mesa Nvidia Nouveau Gallium driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-gallium-r300() { DESCRIPTION="Mesa Ati Radeon r300 Gallium driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-gallium-r600() { DESCRIPTION="Mesa Ati Radeon r600 Gallium driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } split_info_mesa-gallium-swrast() { DESCRIPTION="Mesa Software Raster Gallium driver." DEPEND="== ${PCATEGORIE}/mesa-${PVER}" } #split_info_mesa-gallium-vmwgfx() #{ # DESCRIPTION="Mesa Vmware generic Gallium driver." # DEPEND="== ${PCATEGORIE}/mesa-${PVER}" #} src_prepare() { munpack ${SRCFILE} || die # no debug code in the drives (gentoo) all-abis 'find src/mesa/drivers/dri -name *.[hc] -exec egrep -l "\#define\W+DO_DEBUG\W+1" {} \; | xargs sed -i -re "s/\#define\W+DO_DEBUG\W+1/\#define DO_DEBUG 0/" ;' # get rid of glut includes all-abis rm -f include/GL/glut*h || die } src_compile() { # gallium is highly experimental, disabled atm! mconfigure \ --with-driver=dri \ --with-dri-driverdir=/usr/'$(mlibdir)'/dri \ --disable-debug \ --disable-glut \ --disable-ttm-api \ --without-demos \ --enable-glx-tls \ --enable-asm \ --enable-xcb \ --enable-shared-glapi \ --enable-shared-dricore \ --enable-glw \ --enable-egl \ --enable-gles1 \ --enable-gles2 \ --enable-gallium-egl \ --enable-gallium-llvm \ --with-gallium-drivers=r300,r600,nouveau,swrast \ --with-state-trackers=glx,dri,egl,vega \ || die # only build software renderer on multilib arches if [[ ${ARCH} = x86_64 ]] then only-m32 "echo 'DRI_DIRS =' >> configs/autoconf" || die fi mmake -j1 || die } src_install_mesa() { # needed directories minstalldir /etc/env.d || die mmake DESTDIR=${BINDIR} install || die # # missing gl headers # minstallfile src/glw/GLwDrawA.h /usr/include/GL || die # # # remove private headers # rm -f ${BINDIR}/usr/include/GL/GLw*P.h || die for abi in ${MULTILIB_ABIS} do [[ ${abi} = m32 ]] && ABI_LIBDIR="lib" [[ ${abi} = m64 ]] && ABI_LIBDIR="lib64" cd ${SRCDIR}-${abi} # fix opengl-symlinks # first remove invalid symlinks find ${BINDIR}/usr/$(mlibdir) -name libGL\.* -type l | xargs rm -f # now create required opengl-symlinks mlink libGL.so.1.2 /usr/$(mlibdir)/libGL.so || die mlink libGL.so.1.2 /usr/$(mlibdir)/libGL.so.1 || die # export LIBGL_DRIVER_PATH location. # we are using '/usr/lib/dri' as hardcoded location. # but nvidia and ati are using '/usr/$(mlibdir)/xorg/modules/dri' # LIBGL_DRIVER_PATH overwrites the hardcoded location and # if nvidia or ati driver are installed # the dri modules will never be found by libGL # use "LIBGL_DEBUG=verbose glxinfo" to check this issue echo "LIBGL_DRIVERS_PATH=/usr/$(mlibdir)/dri" > ${BINDIR}/etc/env.d/09mesa-${abi} || die # remove dri-drivers, they are in extra packages rm -r ${BINDIR}/usr/$(mlibdir)/dri/*_dri.so || die done # cleanup zapmost ${BINDIR} etc/env.d usr/$(mlibdir)/*.so usr/$(mlibdir)/*.so.* \ $(if [[ $(mlibdir) != lib ]];then echo "usr/lib/*.so usr/lib/*.so.*"; fi) \ || die } src_install_mesa-dev() { mmake DESTDIR=${BINDIR} install || die # missing gl headers minstallfile src/glw/GLwDrawA.h /usr/include/GL || die # remove private headers rm -f ${BINDIR}/usr/include/GL/GLw*P.h || die for abi in ${MULTILIB_ABIS} do [[ ${abi} = m32 ]] && ABI_LIBDIR="lib" [[ ${abi} = m64 ]] && ABI_LIBDIR="lib64" cd ${SRCDIR}-${abi} # satisfy libtool minstallfile -s libGLU.la /usr/$(mlibdir) || die minstallfile -s libGL.la /usr/$(mlibdir) || die # fix libdir on 64bit arches if [[ $(mlibdir) != lib ]] then sed -i "s:/usr/lib:/usr/$(mlibdir):g" ${BINDIR}/usr/$(mlibdir)/libGLU.la || die sed -i "s:/usr/lib:/usr/$(mlibdir):g" ${BINDIR}/usr/$(mlibdir)/libGL.la || die fi done # cleanup rm -r ${BINDIR}/usr/$(mlibdir)/*.so || die rm -r ${BINDIR}/usr/$(mlibdir)/*.so.* || die rm -r ${BINDIR}/usr/$(mlibdir)/dri || die if [[ $(mlibdir) != lib ]] then rm -r ${BINDIR}/usr/lib/*.so || die rm -r ${BINDIR}/usr/lib/*.so.* || die rm -r ${BINDIR}/usr/lib/dri || die fi } #src_install_mesa-dri-swrast() #{ # mmake -C src/mesa/drivers/dri/swrast DESTDIR=${BINDIR} install || die #} src_install_mesa-dri-i810() { mmake -C src/mesa/drivers/dri/i810 DESTDIR=${BINDIR} install || die } src_install_mesa-dri-i915() { mmake -C src/mesa/drivers/dri/i915 DESTDIR=${BINDIR} install || die } src_install_mesa-dri-i965() { mmake -C src/mesa/drivers/dri/i965 DESTDIR=${BINDIR} install || die } src_install_mesa-dri-mach64() { mmake -C src/mesa/drivers/dri/mach64 DESTDIR=${BINDIR} install || die } src_install_mesa-dri-mga() { mmake -C src/mesa/drivers/dri/mga DESTDIR=${BINDIR} install || die } src_install_mesa-dri-r128() { mmake -C src/mesa/drivers/dri/r128 DESTDIR=${BINDIR} install || die } src_install_mesa-dri-r200() { mmake -C src/mesa/drivers/dri/r200 DESTDIR=${BINDIR} install || die } #src_install_mesa-dri-r300() #{ # mmake -C src/mesa/drivers/dri/r300 DESTDIR=${BINDIR} install || die #} #src_install_mesa-dri-r600() #{ # mmake -C src/mesa/drivers/dri/r600 DESTDIR=${BINDIR} install || die #} src_install_mesa-dri-radeon() { mmake -C src/mesa/drivers/dri/radeon DESTDIR=${BINDIR} install || die } src_install_mesa-dri-savage() { mmake -C src/mesa/drivers/dri/savage DESTDIR=${BINDIR} install || die } src_install_mesa-dri-sis() { mmake -C src/mesa/drivers/dri/sis DESTDIR=${BINDIR} install || die } src_install_mesa-dri-unichrome() { mmake -C src/mesa/drivers/dri/unichrome DESTDIR=${BINDIR} install || die } #src_install_mesa-gallium-i915() #{ # mmake -C src/gallium/targets/dri-i915 DESTDIR=${BINDIR} install || die #} #src_install_mesa-gallium-i965() #{ # mmake -C src/gallium/targets/dri-i965 DESTDIR=${BINDIR} install || die #} src_install_mesa-gallium-nouveau() { mmake -C src/gallium/targets/dri-nouveau DESTDIR=${BINDIR} install || die } src_install_mesa-gallium-r300() { mmake -C src/gallium/targets/dri-r300 DESTDIR=${BINDIR} install || die } src_install_mesa-gallium-r600() { mmake -C src/gallium/targets/dri-r600 DESTDIR=${BINDIR} install || die } src_install_mesa-gallium-swrast() { mmake -C src/gallium/targets/dri-swrast DESTDIR=${BINDIR} install || die } #src_install_mesa-gallium-vmwgfx() #{ # mmake -C src/gallium/targets/dri-vmwgfx DESTDIR=${BINDIR} install || die #}