tools: utility script to create and update external sources
diff --git a/update_external_sources.sh b/update_external_sources.sh
new file mode 100755
index 0000000..90279ac
--- /dev/null
+++ b/update_external_sources.sh
@@ -0,0 +1,111 @@
+#!/bin/bash
+# Update source for glslang and LLVM
+# Copy necessary BIL pieces into glslang and LLVM
+
+BUILDDIR=$PWD
+BASEDIR=$BUILDDIR/..
+
+function create_glslang () {
+   rm -rf $BASEDIR/glslang
+   mkdir -p $BASEDIR/glslang
+   cd $BASEDIR/glslang
+   svn checkout https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang .
+}
+
+function update_glslang () {
+   echo "Updating $BASEDIR/glslang"
+   cd $BASEDIR/glslang
+   svn update
+}
+
+function create_LunarGLASS () {
+   rm -rf $BASEDIR/LunarGLASS
+   mkdir -p $BASEDIR/LunarGLASS/Core/LLVM
+   cd $BASEDIR/LunarGLASS/Core/LLVM 
+   wget http://llvm.org/releases/3.4/llvm-3.4.src.tar.gz
+   tar --gzip -xf llvm-3.4.src.tar.gz
+   cd $BASEDIR/LunarGLASS
+   svn checkout --force https://lunarglass.googlecode.com/svn/trunk/ .
+   svn revert --depth=infinity .
+}
+
+function create_BIL () {
+   rm -rf $BASEDIR/BIL
+   mkdir -p $BASEDIR/BIL
+   cd $BASEDIR/BIL
+   if [ -z "$KHRONOS_ACCOUNT_NAME" ]; then
+      echo "Must define KHRONOS_ACCOUNT_NAME to access BIL component"
+   else
+      svn checkout --username "$KHRONOS_ACCOUNT_NAME" https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/BIL .
+   fi
+}
+
+function update_LunarGLASS () {
+   echo "Updating $BASEDIR/LunarGLASS"
+   cd $BASEDIR/LunarGLASS
+   svn update
+}
+
+function update_BIL () {
+   if [ -d "$BASEDIR/BIL" ]; then
+     # Update source
+     cd $BASEDIR/BIL
+     svn update
+     # copy of necessary BIL pieces into glslang
+     cp $BASEDIR/BIL/glslangOverlay_into_BIL/* $BASEDIR/glslang/BIL
+     cp $BASEDIR/BIL/Bil.h $BASEDIR/glslang/BIL
+     cp $BASEDIR/BIL/GLSL450Lib.h $BASEDIR/glslang/BIL
+     # copy of necessary BIL pieces into LLVM
+     cp $BASEDIR/BIL/ToLLVM/CMakeLists.txt $BASEDIR/LunarGLASS
+     cp -r $BASEDIR/BIL/ToLLVM/Standalone $BASEDIR/LunarGLASS
+     cp -r $BASEDIR/BIL/ToLLVM/FrontEnds/* $BASEDIR/LunarGLASS/Frontends/
+
+#     cd $BASEDIR
+#     tar cf bil.tar BIL
+#     scp bil.tar ns1:~dropbox/Courtney
+   fi
+}
+
+function build_glslang () {
+   cd $BASEDIR/glslang
+   mkdir -p build
+   cd build
+   cmake -D CMAKE_BUILD_TYPE=Release ..
+   cmake -D CMAKE_BUILD_TYPE=Release ..
+   make
+   make install
+}
+
+function build_LunarGLASS () {
+   cd $BASEDIR/LunarGLASS/Core/LLVM/llvm-3.4
+   if [ ! -d "$BASEDIR/LunarGLASS/Core/LLVM/llvm-3.4/build" ]; then
+      mkdir -p build
+      cd build
+      ../configure --enable-terminfo=no --enable-curses=no
+      REQUIRES_RTTI=1 make -j $(nproc) && make install DESTDIR=`pwd`/install
+   fi
+   cd $BASEDIR/LunarGLASS
+   mkdir -p build
+   cd build
+   cmake -D CMAKE_BUILD_TYPE=Release ..
+   cmake -D CMAKE_BUILD_TYPE=Release ..
+   make
+   make install
+}
+
+if [ ! -d "$BASEDIR/glslang" ]; then
+   create_glslang
+fi
+if [ ! -d "$BASEDIR/LunarGLASS" ]; then
+   create_LunarGLASS
+fi
+if [ ! -d "$BASEDIR/BIL" ]; then
+   create_BIL
+fi
+
+update_glslang
+update_LunarGLASS
+update_BIL
+
+build_LunarGLASS
+build_glslang