# 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}" export_exlib_phases src_prepare src_install require flag-o-matic multilib 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/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" } mesa_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) } image_mv() { mv ${@} || die "mv ${1} failed" } image_rm() { rm ${@} || die "rm ${1} failed" } mesa_src_install() { local lib_path="/usr/$(get_libdir)" local opengl_path="${lib_path}/opengl/${OPENGL_DIR}" bin/installmesa "${IMAGE}/tmp" || die "bin/installmesa failed" cd "${IMAGE}" || die "cd ${IMAGE} failed" for bin in $(find "${WORK}/progs" -type f -perm -u=x) ; do dobin "${bin}" done image_rm usr/bin/glslnoise.c if ! option python ; then image_rm usr/bin/api_speed.py else sed \ -e 's:env python2:env python:' \ -i usr/bin/api_speed.py \ || die "sed usr/bin/api_speed.py failed" fi dodir "${lib_path}" dodir "${opengl_path}/"{lib,include} dodir /usr/include # move opengl libs/includes into our eclectic path image_mv tmp/lib/libGL.so* "./${opengl_path}/lib" image_mv tmp/include/GL/gl{,x}{,ext}.h "./${opengl_path}/include" # move the rest of the libs and includes into system paths image_mv tmp/include/* ./usr/include image_mv tmp/lib/* "./${lib_path}" # cleanup image_rm tmp -rf insinto /usr/include/GL doins -r "${WORK}/include/GL/internal" image_rm ./usr/include/GL/internal/glcore.h insinto "${lib_path}/dri" doins "${WORK}/$(get_libdir)/"*_dri.so insinto "${lib_path}/pkgconfig" doins "${FILES}/"*.pc sed \ -e "s#__libdir__#$(get_libdir)#" \ -i "./${lib_path}/pkgconfig/"*.pc \ || die "sed *.pc failed" insinto "${lib_path}" doins "${FILES}/"*.la sed \ -e "s#__libdir__#$(get_libdir)#" \ -i "./${lib_path}/"*.la \ || die "sed *.la failed" image_mv "./${lib_path}/libGL.la" "./${opengl_path}/lib" }