diff --git a/android-env.sh b/android-env.sh
index 70a6f84..25f61fe 100644
--- a/android-env.sh
+++ b/android-env.sh
@@ -30,8 +30,8 @@ export CXX=arm-linux-androideabi-g++
export C_INCLUDE_PATH=$PREFIX/include
export CPLUS_INCLUDE_PATH=$PREFIX/include
-export ANDROID_SDK_DIR="$PWD/android-sdk-linux"
-export ANDROID_NDK_DIR=`find $PWD/* -maxdepth 0 -type d -name 'android-ndk-r*'`
+export ANDROID_SDK_DIR="$HOME/android-sdk-linux"
+export ANDROID_NDK_DIR=`find $HOME -maxdepth 1 -type d -name 'android-ndk-*'`
export ANDROID_NDK_TOOLCHAIN="$PWD/toolchain"
export gl_cv_header_working_stdint_h=yes
diff --git a/build-clutter-android.sh b/build-clutter-android.sh
index 101aaa8..da7dc4b 100755
--- a/build-clutter-android.sh
+++ b/build-clutter-android.sh
@@ -16,42 +16,114 @@
set -ex
-# download Android NDK and create standalone toolchain
-if ! test -d android-ndk-r8c; then
- wget http://dl.google.com/android/ndk/android-ndk-r8c-linux-x86.tar.bz2
- tar jxf android-ndk-r8c-linux-x86.tar.bz2
- rm android-ndk-r8c-linux-x86.tar.bz2
- pushd android-ndk-r8c
- ./build/tools/make-standalone-toolchain.sh --platform=android-14 --install-dir=../toolchain
- popd
+# Which target architecture (arm or x86).
+ARCH=x86
+
+# Which Android "API Level" to build for.
+API_LEVEL=14
+
+# Which version of the Android NDK toolchain to use (e.g. 4.6).
+TOOLCHAIN_VERSION=4.6
+
+# Where the Android NDK lives.
+NDK_NAME=android-ndk-r8d
+NDK_DIR=$HOME/$NDK_NAME
+
+# Where the Android SDK lives.
+SDK_NAME=android-sdk-linux
+SDK_DIR=$HOME/$SDK_NAME
+
+# Download the Android NDK if necessary.
+if ! test -d $NDK_DIR; then
+ mkdir -p $NDK_DIR
+ pushd $NDK_DIR/..
+ wget http://dl.google.com/android/ndk/$NDK_NAME-linux-x86.tar.bz2 \
+ && tar jxf $NDK_NAME-linux-x86.tar.bz2 \
+ && rm $NDK_NAME-linux-x86.tar.bz2
+ popd
fi
-JHB_PREFIX=$PWD/jhbuild/.local
+# Download the Android SDK if necessary.
+if ! test -d $SDK_DIR; then
+ mkdir -p $SDK_DIR
+ pushd $SDK_DIR/..
+ wget http://dl.google.com/android/android-sdk_r21-linux.tgz \
+ && tar zxf android-sdk_r21-linux.tgz \
+ && rm android-sdk_r21-linux.tgz
+ popd
+fi
+
+# Update the Android SDK if necessary.
+#$SDK_DIR/tools/android update sdk -u --filter platform-tool,tool
+#$SDK_DIR/tools/android update sdk -u --filter android-$API_LEVEL
+
+# Toolchain name: the prefix of toolchain command names
+# Toolchain arg: passed to make-standalon-toolchain.sh
+# Toolchain dir: where we put the standalone toolchain
+case $ARCH in
+ arm)
+ export TOOLCHAIN_NAME=arm-linux-androideabi
+ TOOLCHAIN_ARG=arm-linux-androideabi-$TOOLCHAIN_VERSION
+ ;;
+ x86)
+ export TOOLCHAIN_NAME=i686-linux-android
+ TOOLCHAIN_ARG=x86-$TOOLCHAIN_VERSION
+ ;;
+esac
+TOOLCHAIN_DIR=$PWD/toolchain-$ARCH-$TOOLCHAIN_VERSION
+
+# Create the standalone toolchain.
+$NDK_DIR/build/tools/make-standalone-toolchain.sh \
+ --toolchain=$TOOLCHAIN_ARG \
+ --platform=android-$API_LEVEL \
+ --install-dir=$TOOLCHAIN_DIR
-# set up patched version of jhbuild
+# Set up patched version of jhbuild
+JHB_PREFIX=$PWD/jhbuild/.local
if ! test -d jhbuild; then
- git clone git://git.gnome.org/jhbuild
- pushd jhbuild
- patch -p1 -i ../modulesets/patches/jhbuild/disable-clean-la-files.patch
- ./autogen.sh --prefix=$JHB_PREFIX
- make install
- popd
+ git clone git://git.gnome.org/jhbuild
+ pushd jhbuild
+ patch -p1 -i ../modulesets/patches/jhbuild/disable-clean-la-files.patch
+ ./autogen.sh --prefix=$JHB_PREFIX
+ make install
+ popd
fi
mkdir -p $JHB_PREFIX/share/aclocal
cp /usr/share/aclocal/gtk-doc.m4 $JHB_PREFIX/share/aclocal/
-source ./android-env.sh
+export PREFIX="$PWD/install-$ARCH-$API_LEVEL"
-# start the build
-$JHB_PREFIX/bin/jhbuild -f jhbuildrc-android build -q mx libsoup
+export CFLAGS=
+export CC=$TOOLCHAIN_NAME-gcc
+export CXX=$TOOLCHAIN_NAME-g++
-# download Android SDK
-if ! test -d android-sdk-linux; then
- wget http://dl.google.com/android/android-sdk_r21-linux.tgz
- tar zxf android-sdk_r21-linux.tgz
- rm android-sdk_r21-linux.tgz
-fi
+export C_INCLUDE_PATH=$PREFIX/include
+export CPLUS_INCLUDE_PATH=$PREFIX/include
+
+export gl_cv_header_working_stdint_h=yes
+
+# remove other langauges
+export LINGUAS=C
+
+# avoid picking up system libraries
+export PKG_CONFIG_LIBDIR=/foo/bar
+export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
+
+export ac_cv_path_GLIB_COMPILE_RESOURCES=/usr/bin/glib-compile-resources
+export ac_cv_path_GLIB_COMPILE_SCHEMAS=/usr/bin/glib-compile-schemas
+export ac_cv_path_GLIB_GENMARSHAL=/usr/bin/glib-genmarshal
+
+export PATH="$TOOLCHAIN_DIR/bin:$NDK_DIR:$SDK_DIR/tools/:$SDK_DIR/platform-tools:$PATH"
+
+export NDK_MODULE_PATH=$PWD
+
+export PKG_CONFIG="pkg-config \
+ --define-variable=glib_genmarshal=/usr/bin/glib-genmarshal \
+ --define-variable=gobject_query=/usr/bin/gobject-query \
+ --define-variable=glib_mkenums=/usr/bin/glib-mkenums \
+ --define-variable=glib_compile_resources=/usr/bin/glib-compile-resources \
+"
-android update sdk -u --filter platform-tool,tool
-android update sdk -u --filter android-14
+# Do it.
+$JHB_PREFIX/bin/jhbuild -f jhbuildrc-android -m modulesets/clutter-android.modules ${*:-build glib}
diff --git a/jhbuildrc-android b/jhbuildrc-android
index b493478..d0d4a9e 100644
--- a/jhbuildrc-android
+++ b/jhbuildrc-android
@@ -1,21 +1,8 @@
-moduleset = os.environ['PWD'] + '/modulesets/clutter-android.modules'
checkoutroot = os.environ['PWD'] + '/sources'
-prefix = os.environ['PWD'] + '/install'
-
+prefix = os.environ['PREFIX']
build_policy = 'updated'
use_lib64 = False
-
use_local_modulesets = True
partial_build = False
-autogenargs = '--disable-shared --disable-gtk-doc --host=arm-linux-androideabi gl_cv_header_working_stdint_h=yes --disable-introspection '
+autogenargs = '--disable-shared --disable-gtk-doc gl_cv_header_working_stdint_h=yes --disable-introspection --build=x86_64-unknown-linux-gnu --host=' + os.environ['TOOLCHAIN_NAME']
makeargs = '-j 4'
-
-
-os.environ['ac_cv_path_GLIB_COMPILE_RESOURCES']='/usr/bin/glib-compile-resources'
-os.environ['ac_cv_path_GLIB_COMPILE_SCHEMAS']='/usr/bin/glib-compile-schemas'
-os.environ['ac_cv_path_GLIB_GENMARSHAL']='/usr/bin/glib-genmarshal'
-
-os.environ['PATH'] += ':' + os.environ['PWD'] + '/toolchain/bin'
-os.environ['CC'] = 'arm-linux-androideabi-gcc'
-
-os.environ['PKG_CONFIG'] = 'pkg-config --define-variable=glib_genmarshal=/usr/bin/glib-genmarshal --define-variable=gobject_query=/usr/bin/gobject-query --define-variable=glib_mkenums=/usr/bin/glib-mkenums --define-variable=glib_compile_resources=/usr/bin/glib-compile-resources'
diff --git a/modulesets/clutter-android.modules b/modulesets/clutter-android.modules
index 0bda580..002872e 100644
--- a/modulesets/clutter-android.modules
+++ b/modulesets/clutter-android.modules
@@ -97,7 +97,6 @@
-