diff --git a/unix/build-xorg-7.4 b/unix/build-xorg-7.4
new file mode 100755
index 0000000..7b5c525
--- /dev/null
+++ b/unix/build-xorg-7.4
@@ -0,0 +1,155 @@
+#!/bin/bash
+# -*- mode: shell-script; coding: UTF-8 -*-
+# 
+# Build Xvnc with Xorg 7.4
+#
+
+set -e
+
+PREFIX="/tmp/xorg-7.4-${USER}"
+export ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
+export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig"
+MAKE="make"
+
+modules="dri2proto \
+    libpthread-stubs \
+    glproto \
+    xf86vidmodeproto \
+    xextproto \
+    xproto \
+    kbproto \
+    inputproto \
+    xcmiscproto \
+    bigreqsproto \
+    fixesproto \
+    damageproto \
+    xf86driproto \
+    randrproto \
+    renderproto \
+    scrnsaverproto \
+    resourceproto \
+    fontsproto \
+    videoproto \
+    compositeproto \
+    xineramaproto \
+    fontcacheproto \
+    libdrm \
+    util-macros \
+    libXau \
+    xtrans \
+    libXdmcp \
+    libX11 \
+    libXext \
+    libXxf86vm \
+    libICE \
+    libSM \
+    libXt \
+    libXmu \
+    libXfixes \
+    libXdamage \
+    libXi \
+    evieext \
+    libxkbfile \
+    libfontenc \
+    libXfont \
+    libpciaccess \
+    xkbcomp \
+    pixman"
+
+
+init()
+{
+    mkdir -p xorg
+    update_modules
+    pushd xserver
+    patch -p1 < ../xserver15.patch
+    autoreconf -fiv
+}
+
+
+update_modules()
+{
+    pushd xorg
+    ../download-xorg
+    for module in ${modules}; do
+        tar jxf ${module}.tar.bz2
+    done
+    tar jxf Mesa.tar.bz2
+    tar jxf xorg-server.tar.bz2
+    cp -r xorg-server-1.*/* ../xserver
+    popd
+}
+
+
+build ()
+{
+
+    # Build VNC
+    make distclean || true
+    ./configure --prefix=${PREFIX}
+    make
+
+    # Build Xorg
+    pushd xorg
+    for module in ${modules}; do
+        extraoptions=""
+        cd ${module}-*
+        echo ======================
+        echo configuring ${module}
+        echo ======================
+        if [ "${module}" = "libX11" ]; then
+            extraoptions="${extraoptions} --without-xcb"
+        fi
+        ./configure --prefix="${PREFIX}" ${extraoptions}
+        echo ======================
+        echo building ${module}
+        echo ======================
+        if [ $? -ne 0 ]; then
+                echo "Failed to configure ${module}."
+                exit
+        fi
+        ($MAKE);
+        make install
+        cd ..
+    done
+
+    # build mesa
+    pushd Mesa-*
+    ./configure --prefix=${PREFIX} --with-driver=dri --disable-glut --without-demos
+    if [ $? -ne 0 ]; then
+	echo "Failed to configure Mesa."
+	exit
+    fi
+    ($MAKE)
+    make install
+    popd
+
+    popd
+
+    # build xserver
+    cd xserver
+    ./configure --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
diff --git a/unix/download-xorg b/unix/download-xorg
new file mode 100755
index 0000000..c397329
--- /dev/null
+++ b/unix/download-xorg
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+# -*-mode: python; coding: UTF-8 -*-
+
+import os
+import glob
+import subprocess
+
+#INDI = "http://ftp.sunet.se/pub/X11/ftp.x.org/individual"
+INDI = "http://ftp.x.org/pub/individual/"
+PROTO = INDI + "proto/"
+LIB = INDI + "lib/"
+SERVER = INDI + "xserver/"
+UTIL = INDI + "util/"
+DATA = INDI + "data/"
+APP = INDI + "app/"
+
+packages = {
+    "damageproto": PROTO + "damageproto-1.1.0.tar.bz2",
+    "fixesproto":  PROTO + "fixesproto-4.0.tar.bz2",
+    "resourceproto": PROTO + "resourceproto-1.0.2.tar.bz2",
+    "fontsproto": PROTO + "fontsproto-2.0.2.tar.bz2",
+    "fontcacheproto" : PROTO + "fontcacheproto-0.1.2.tar.bz2",
+    "bigreqsproto": PROTO + "bigreqsproto-1.0.2.tar.bz2",
+    "kbproto": PROTO + "kbproto-1.0.3.tar.bz2",
+    "inputproto": PROTO + "inputproto-1.4.4.tar.bz2",
+    "glproto": PROTO + "glproto-1.4.9.tar.bz2",
+    "xineramaproto": PROTO + "xineramaproto-1.1.2.tar.bz2",
+    "randrproto": PROTO + "randrproto-1.2.2.tar.bz2",
+    "scrnsaverproto": PROTO + "scrnsaverproto-1.1.0.tar.bz2",
+    "renderproto": PROTO + "renderproto-0.9.3.tar.bz2",
+    "evieext": PROTO + "evieext-1.0.2.tar.bz2",
+    "xcmiscproto": PROTO + "xcmiscproto-1.1.2.tar.bz2",
+    "xextproto": PROTO + "xextproto-7.0.3.tar.bz2",
+    "xf86driproto": PROTO + "xf86driproto-2.0.4.tar.bz2",
+    "dri2proto": PROTO + "dri2proto-1.1.tar.bz2",
+    "compositeproto": PROTO + "compositeproto-0.4.tar.bz2",
+    "xf86vidmodeproto": PROTO + "xf86vidmodeproto-2.2.2.tar.bz2",
+    "trapproto": PROTO + "trapproto-3.4.3.tar.bz2",
+    "videoproto": PROTO + "videoproto-2.2.2.tar.bz2",
+    "xproto": PROTO + "xproto-7.0.13.tar.bz2",
+
+    "libxkbfile": LIB + "libxkbfile-1.0.5.tar.bz2",
+    "libXxf86vm": LIB + "libXxf86vm-1.0.2.tar.bz2",
+    "libXext": LIB + "libXext-1.0.4.tar.bz2",
+    "libfontenc": LIB + "libfontenc-1.0.4.tar.bz2",
+    "libXau": LIB + "libXau-1.0.4.tar.bz2",
+    "libXfont": LIB + "libXfont-1.3.4.tar.bz2",
+    "libXfixes": LIB + "libXfixes-4.0.3.tar.bz2",
+    "libSM": LIB + "libSM-1.1.0.tar.bz2",
+    "libXi": LIB + "libXi-1.1.3.tar.bz2",
+    "libXmu": LIB + "libXmu-1.0.4.tar.bz2",
+    "libX11": LIB + "libX11-1.1.5.tar.bz2",
+    "libXdmcp": LIB + "libXdmcp-1.0.2.tar.bz2",
+    "xtrans": LIB + "xtrans-1.2.2.tar.bz2",
+    "libXt": LIB + "libXt-1.0.5.tar.bz2",
+    "libpciaccess": LIB + "libpciaccess-0.10.4.tar.bz2",
+    "libICE": LIB + "libICE-1.0.4.tar.bz2",
+    "pixman": LIB + "pixman-0.12.0.tar.bz2",
+    "libXdamage": LIB + "libXdamage-1.1.1.tar.bz2",
+
+    "util-macros": UTIL + "util-macros-1.1.6.tar.bz2",
+    "xorg-server": SERVER + "xorg-server-1.5.3.tar.bz2",
+    "xkeyboard-config": DATA + "xkeyboard-config-1.4.tar.bz2",
+    "xkbcomp": APP + "xkbcomp-1.0.5.tar.bz2",
+
+    "libdrm": "http://dri.freedesktop.org/libdrm/libdrm-2.4.0.tar.bz2",
+    "Mesa": "http://downloads.sourceforge.net/mesa3d/MesaLib-7.2.tar.bz2",
+    "libxcb": "http://xcb.freedesktop.org/dist/libxcb-1.1.91.tar.bz2",
+    "libpthread-stubs": "http://xcb.freedesktop.org/dist/libpthread-stubs-0.1.tar.bz2",
+    "xcb-proto": "http://xcb.freedesktop.org/dist/xcb-proto-1.2.tar.bz2",
+    }
+
+
+
+def main():
+    for pkg in packages.keys():
+        loc = packages[pkg]
+        fname = pkg + ".tar.bz2"
+        assert 0 == subprocess.call(["wget", "-O", fname, loc])
+
+
+main()
