# Copyright (c) 2008 Daniel Mierswa # Distributed under the terms of the GNU General Public License v2 SCM_REPOSITORY="${SCM_REPOSITORY:=git://anongit.freedesktop.org/mesa/mesa}" OPENGL_DIR="${OPENGL_DIR:=xorg-x11}" require flag-o-matic multilib versionator scm-git SUMMARY="Mesa's OpenGL library" HOMEPAGE="http://mesa3d.sourceforge.net/" LICENCES="FIXME" SLOT="0" video_drivers="intel mach64 mga nouveau r128 radeon s3virge savage sis sunffb tdfx trident via" MYOPTIONS=" examples motif python xcb platform: x86 amd64 video_drivers: ${video_drivers}" DEPENDENCIES=" build: dev-util/pkg-config x11-proto/glproto x11-proto/inputproto x11-proto/xextproto x11-proto/xf86driproto x11-proto/xf86vidmodeproto x11-utils/makedepend build+run: !x11-dri/mesa x11-dri/eclectic-opengl >=x11-dri/libdrm-2.3.1 x11-libs/libICE x11-libs/libX11[xcb?] >=x11-libs/libXdamage-1.1.1 x11-libs/libXext x11-libs/libXi x11-libs/libXmu x11-libs/libXxf86vm xcb? ( x11-libs/libxcb ) run: python? ( dev-lang/python ) " determine_target() { TARGET= option platform:amd64 && TARGET="linux-dri-x86-64" option platform:x86 && TARGET="linux-dri-x86" [[ -z "${TARGET}" ]] \ && die "I don't know how to build mesa for your platform." } driver_enable() { option ${1} && shift && DRI_DRIVERS="${DRI_DRIVERS} $@" } add_config() { echo ${@} >> "configs/${TARGET}" || die "echo >> configs/${TARGET} failed" } src_prepare() { default determine_target rm -f "${WORK}"/include/GL/glut*h driver_enable video_drivers:intel i810,i915,i965 driver_enable video_drivers:mach64 mach64 driver_enable video_drivers:mga mga driver_enable video_drivers:nouveau nouveau driver_enable video_drivers:r128 r128 driver_enable video_drivers:radeon radeon,r200,r300 driver_enable video_drivers:s3virge s3v driver_enable video_drivers:savage savage driver_enable video_drivers:sis sis driver_enable video_drivers:sunffb ffb driver_enable video_drivers:tdfx tdfx driver_enable video_drivers:trident trident driver_enable video_drivers:via unichrome 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/" ; sed \ -e "/^LIB_DIR = /s:lib:$(get_libdir):" \ -e '/^SRC_DIRS = /s:glut/glx::' \ -e '/^INSTALL_DIR = /s:/usr/local:/usr:' \ -e '/^DRI_DRIVER_INSTALL_DIR = /s:lib:$(LIB_DIR):' \ -i configs/default \ || die "sed configs/default failed" if ! option examples ; then sed \ -e '/^PROGRAM_DIRS = /s:demos redbook samples glsl::' \ -i configs/default \ || die "sed configs/default failed (examples)" fi if option motif ; then add_config 'GLW_LIB_DEPS += -lXm' add_config 'GLW_SOURCES += GLwMDrawA.c' fi if option xcb ; then add_config 'DEFINES += -DUSE_XCB' for pkg in xcb x11-xcb xcb-glx ; do add_config "X11_INCLUDES += $(pkg-config --cflags-only-I ${pkg})" add_config "GL_LIB_DEPS += $(pkg-config --libs ${pkg})" done fi add_config "EXTRA_LIB_PATH = $(pkg-config --libs-only-L x11)" add_config 'ARCH_FLAGS += -DGLX_USE_TLS' add_config "CFLAGS += ${CFLAGS}" add_config "CXXFLAGS += ${CXXFLAGS}" add_config "DRI_DIRS = ${DRI_DRIVERS} ${ADDITIONAL_DRIVERS} swrast" emake "${TARGET}" \ OPT_FLAGS="" \ CC=$(tc-getCC) \ CXX=$(tc-getCXX) } src_install() { for bin in $(find "${WORK}/progs" -type f -perm -u=x) ; do dobin "${bin}" done cd "${IMAGE}" || die "cd failed (1)" rm ./usr/bin/glslnoise.c || die "rm failed (1)" if ! option python ; then rm ./usr/bin/api_speed.py || die "rm failed (2)" else sed \ -e 's:env python2:env python:' \ -i ./usr/bin/api_speed.py \ || die "sed ./usr/bin/api_speed.py failed" fi mkdir -p "${IMAGE}/tmp" || die "mkdir failed (1)" cd "${WORK}" || die "cd failed (2)" bin/installmesa "${IMAGE}/tmp" || die "bin/installmesa failed" local opengl_path="/usr/$(get_libdir)/opengl/${OPENGL_DIR}" dodir "${opengl_path}/"{lib,include} dodir "/usr/$(get_libdir)" dodir /usr/include cd "${IMAGE}" || die "cd ${IMAGE} failed" # move opengl libs/includes into our eclectic path mv ./tmp/lib/libGL.so* "./${opengl_path}/lib" \ || die "mv ./tmp/lib/libGL.so* failed" mv ./tmp/include/GL/gl{,x}{,ext}.h "./${opengl_path}/include" \ || die "mv ./tmp/include/GL/* failed" # move the rest of the libs and includes into system paths mv ./tmp/include/* ./usr/include/ || die "mv ./tmp/include/* failed" mv ./tmp/lib/* "./usr/$(get_libdir)" || die "mv ./tmp/lib/* failed" # cleanup rm -rf ./tmp || die "rm -rf failed" insinto /usr/include/GL doins -r "${WORK}/include/GL/internal" rm ./usr/include/GL/internal/glcore.h || die "rm failed" insinto "/usr/$(get_libdir)/dri" doins "${WORK}/$(get_libdir)/"*_dri.so sed \ -e "s#__libdir__#$(get_libdir)#" \ -i "${FILES}/"*.pc \ || die "sed *.pc failed" insinto "/usr/$(get_libdir)/pkgconfig" doins "${FILES}/"*.pc sed \ -e "s#__libdir__#$(get_libdir)#" \ -i "${FILES}/"*.la \ || die "sed *.la failed" insinto "/usr/$(get_libdir)" doins "${FILES}/"*.la mv "./usr/$(get_libdir)/libGL.la" "./${opengl_path}/lib" \ || die "mv failed (5)" }