| #!/bin/bash | 
 | # Update source for glslang and LLVM | 
 | # Copy necessary BIL pieces into glslang and LLVM | 
 |  | 
 | BIL_REVISION=29773 | 
 | LUNARGLASS_REVISION=1060 | 
 | GLSLANG_REVISION=29773 | 
 |  | 
 | BUILDDIR=$PWD | 
 | BASEDIR=$BUILDDIR/.. | 
 |  | 
 | function create_glslang () { | 
 |    rm -rf $BASEDIR/glslang | 
 |    echo "Creating local glslang repository ($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 -r "$GLSLANG_REVISION" | 
 | } | 
 |  | 
 | function create_LunarGLASS () { | 
 |    rm -rf $BASEDIR/LunarGLASS | 
 |    echo "Creating local LunarGLASS repository ($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 | 
 |    echo "Creating local BIL repository ($BASEDIR/BIL)." | 
 |    mkdir -p $BASEDIR/BIL | 
 |    cd $BASEDIR/BIL | 
 |    svn checkout --username "$KHRONOS_ACCOUNT_NAME" https://cvs.khronos.org/svn/repos/oglc/trunk/nextgen/proposals/BIL . | 
 | } | 
 |  | 
 | function update_LunarGLASS () { | 
 |    echo "Updating $BASEDIR/LunarGLASS" | 
 |    cd $BASEDIR/LunarGLASS | 
 |    svn update -r "$LUNARGLASS_REVISION" | 
 | } | 
 |  | 
 | function update_BIL () { | 
 |    # Update source | 
 |    cd $BASEDIR/BIL | 
 |    echo "Updating $BASEDIR/BIL" | 
 |    svn update -r "$BIL_REVISION" | 
 |    # copy of necessary BIL pieces into glslang | 
 |    cp $BASEDIR/BIL/glslangOverlay_into_BIL/*.h  $BASEDIR/glslang/BIL | 
 |    cp $BASEDIR/BIL/glslangOverlay_into_BIL/*.cpp  $BASEDIR/glslang/BIL | 
 |    cp $BASEDIR/BIL/glslangOverlay_into_BIL/*.txt  $BASEDIR/glslang/BIL | 
 |    cp -r $BASEDIR/BIL/glslangOverlay_into_BIL/glslang/*  $BASEDIR/glslang/glslang/ | 
 |    cp -uv $BASEDIR/BIL/Bil.h $BASEDIR/glslang/BIL | 
 |    cp -uv $BASEDIR/BIL/GLSL450Lib.h $BASEDIR/glslang/BIL | 
 |  | 
 |    # copy of necessary BIL pieces into LLVM | 
 |    cp -uv $BASEDIR/BIL/ToLLVM/CMakeLists.txt $BASEDIR/LunarGLASS | 
 |    cp -r $BASEDIR/BIL/ToLLVM/Standalone $BASEDIR/LunarGLASS | 
 |  | 
 |    cp -r $BASEDIR/BIL/ToLLVM/FrontEnds/* $BASEDIR/LunarGLASS/Frontends/ | 
 |    cp -uv $BASEDIR/BIL/ToLLVM/Backends/GLSL/BottomToGLSL.cpp $BASEDIR/LunarGLASS/Backends/GLSL | 
 |  | 
 | } | 
 |  | 
 | function build_glslang () { | 
 |    echo "Building $BASEDIR/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 () { | 
 |    echo "Building $BASEDIR/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 [ -z "$KHRONOS_ACCOUNT_NAME" ]; then | 
 |    echo "Must define KHRONOS_ACCOUNT_NAME to access BIL component" | 
 |    exit 1 | 
 | fi | 
 |  | 
 | if [ ! -d "$BASEDIR/glslang" ]; then | 
 |    create_glslang | 
 | fi | 
 | if [ ! -d "$BASEDIR/LunarGLASS" ]; then | 
 |    create_LunarGLASS | 
 | fi | 
 | if [ ! -d "$BASEDIR/BIL" ]; then | 
 |    create_BIL | 
 | fi | 
 |  | 
 | if [ ! -d "$BASEDIR/BIL" -o ! -f "$BASEDIR/BIL/Bil.h" ]; then | 
 |       echo "Missing BIL, is your Khronos account correct?" | 
 |       exit 1 | 
 | fi | 
 |  | 
 | update_glslang | 
 | update_LunarGLASS | 
 | update_BIL | 
 |  | 
 | build_glslang | 
 | build_LunarGLASS |