#!/bin/bash # # Build Xvnc with Xorg from git master. Script adapted from http://www.x.org/wiki/Development/git # set -e PREFIX="/tmp/xorg-git-${USER}" PKG_CONFIG_PATH=${PREFIX}/lib/pkgconfig MAKE="make" REPOS="\ git://git.freedesktop.org/git/xorg/util/macros \ git://git.freedesktop.org/git/xorg/proto/x11proto \ git://git.freedesktop.org/git/xorg/proto/damageproto \ git://git.freedesktop.org/git/xorg/proto/xextproto \ git://git.freedesktop.org/git/xorg/proto/fontsproto \ git://git.freedesktop.org/git/xorg/proto/videoproto \ git://git.freedesktop.org/git/xorg/proto/renderproto \ git://git.freedesktop.org/git/xorg/proto/inputproto \ git://git.freedesktop.org/git/xorg/proto/xf86vidmodeproto \ git://git.freedesktop.org/git/xorg/proto/xf86dgaproto \ git://git.freedesktop.org/git/xorg/proto/xf86driproto \ git://git.freedesktop.org/git/xorg/proto/xcmiscproto \ git://git.freedesktop.org/git/xorg/proto/scrnsaverproto \ git://git.freedesktop.org/git/xorg/proto/bigreqsproto \ git://git.freedesktop.org/git/xorg/proto/resourceproto \ git://git.freedesktop.org/git/xorg/proto/compositeproto \ git://git.freedesktop.org/git/xorg/proto/fixesproto \ git://git.freedesktop.org/git/xorg/proto/evieproto \ git://git.freedesktop.org/git/xorg/proto/kbproto \ git://git.freedesktop.org/git/xorg/lib/libxtrans \ git://git.freedesktop.org/git/xorg/lib/libX11 \ git://git.freedesktop.org/git/xorg/lib/libXext \ git://git.freedesktop.org/git/xorg/lib/libxkbfile \ git://git.freedesktop.org/git/xorg/lib/libfontenc \ git://git.freedesktop.org/git/xorg/lib/libXfont \ git://git.freedesktop.org/git/xorg/lib/libXfixes \ git://git.freedesktop.org/git/xorg/lib/libXdamage \ git://git.freedesktop.org/git/xorg/lib/libXv \ git://git.freedesktop.org/git/xorg/lib/libXvMC \ git://git.freedesktop.org/git/xorg/lib/libXxf86vm \ git://git.freedesktop.org/git/xorg/lib/libXinerama \ git://git.freedesktop.org/git/xorg/proto/dri2proto \ git://git.freedesktop.org/git/xorg/proto/glproto \ git://git.freedesktop.org/git/xorg/lib/libpciaccess \ git://git.freedesktop.org/git/pixman \ git://git.freedesktop.org/git/xcb/proto \ git://git.freedesktop.org/git/xcb/pthread-stubs \ git://git.freedesktop.org/git/xcb/libxcb \ git://git.freedesktop.org/git/xorg/proto/randrproto \ git://git.freedesktop.org/git/mesa/drm \ git://git.freedesktop.org/git/mesa/mesa \ git://git.freedesktop.org/git/xorg/xserver \ git://git.freedesktop.org/git/xorg/driver/xf86-input-mouse \ git://git.freedesktop.org/git/xorg/driver/xf86-input-keyboard \ git://git.freedesktop.org/git/xorg/driver/xf86-video-intel" modules="\ fontsproto \ x11proto \ xextproto \ videoproto \ renderproto \ inputproto \ damageproto \ xf86vidmodeproto \ xf86dgaproto \ xf86driproto \ xcmiscproto \ scrnsaverproto \ bigreqsproto \ resourceproto \ compositeproto \ resourceproto \ evieproto \ kbproto \ fixesproto \ libxtrans \ proto \ pthread-stubs \ libxcb \ libX11 \ libXext \ libxkbfile \ libfontenc \ libXfont \ libXv \ libXvMC \ libXxf86vm \ libXfixes \ libXdamage \ dri2proto \ glproto \ libpciaccess \ pixman \ randrproto" init() { mv xserver xserver.vnc for repo in $REPOS; do echo "Cloning $repo"; git clone $repo || true done mv xserver xserver.xorg mv xserver.vnc xserver tar c -C xserver.xorg . | tar x -C xserver cd xserver patch -p1 < ../xserver16.patch autoreconf -fiv cd .. cd macros echo "Building macros" ./autogen.sh --prefix="$PREFIX"; ($MAKE); make install cd .. } update_modules() { for module in $modules; do cd $module git pull cd .. done } build () { export ACLOCAL="aclocal -I $PREFIX/share/aclocal" export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig" # Build VNC make distclean || true ./configure --prefix=${PREFIX} make # Build Xorg for i in $modules; do cd $i echo ====================== echo configuring $i echo ====================== ./autogen.sh --prefix="$PREFIX"; echo ====================== echo building $i echo ====================== if [ $? -ne 0 ]; then echo "Failed to configure $i." exit fi ($MAKE); make install cd .. done # build drm cd drm ./autogen.sh --prefix="$PREFIX" ($MAKE) make -C linux-core # assuming you're on Linux, otherwise use bsd-core make install cd .. # build mesa cd mesa ./autogen.sh --prefix=$PREFIX --with-driver=dri --disable-glut if [ $? -ne 0 ]; then echo "Failed to configure Mesa." exit fi ($MAKE) make install cd .. # build xserver cd xserver ./autogen.sh --prefix=$PREFIX --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg if [ $? -ne 0 ]; then echo "Failed to configure X server." exit fi ($MAKE) make install cd .. } case "$1" in init) init ;; build) build ;; update) update_modules ;; *) echo "Usage: $0 init | build | update" exit 3 esac