#!/bin/bash # Update source for glslang, LunarGLASS, spirv-tools set -e GLSLANG_REVISION=$(cat $PWD/glslang_revision) SPIRV_TOOLS_REVISION=$(cat $PWD/spirv-tools_revision) echo "GLSLANG_REVISION=$GLSLANG_REVISION" echo "SPIRV_TOOLS_REVISION=$SPIRV_TOOLS_REVISION" 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 git clone https://github.com/KhronosGroup/glslang.git . git checkout $GLSLANG_REVISION } function update_glslang () { echo "Updating $BASEDIR/glslang" cd $BASEDIR/glslang git fetch --all git checkout $GLSLANG_REVISION } function create_spirv-tools () { rm -rf $BASEDIR/spirv-tools echo "Creating local spirv-tools repository ($BASEDIR/spirv-tools)." mkdir -p $BASEDIR/spirv-tools cd $BASEDIR/spirv-tools git clone https://github.com/KhronosGroup/SPIRV-Tools.git . git checkout $SPIRV_TOOLS_REVISION } function update_spirv-tools () { echo "Updating $BASEDIR/spirv-tools" cd $BASEDIR/spirv-tools git fetch --all git checkout $SPIRV_TOOLS_REVISION } 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_spirv-tools () { echo "Building $BASEDIR/spirv-tools" cd $BASEDIR/spirv-tools mkdir -p build cd build cmake -D CMAKE_BUILD_TYPE=Release .. make -j $(nproc) } # If any options are provided, just compile those tools # If no options are provided, build everything INCLUDE_GLSLANG=false INCLUDE_SPIRV_TOOLS=false if [ "$#" == 0 ]; then echo "Building glslang, spirv-tools" INCLUDE_GLSLANG=true INCLUDE_SPIRV_TOOLS=true else # Parse options while [[ $# > 0 ]] do option="$1" case $option in # options to specify build of glslang components -g|--glslang) INCLUDE_GLSLANG=true echo "Building glslang ($option)" ;; # options to specify build of spirv-tools components -s|--spirv-tools) INCLUDE_SPIRV_TOOLS=true echo "Building spirv-tools ($option)" ;; *) echo "Unrecognized option: $option" echo "Try the following:" echo " -g | --glslang # enable glslang" echo " -s | --spirv-tools # enable spirv-tools" exit 1 ;; esac shift done fi if [ $INCLUDE_GLSLANG == "true" ]; then if [ ! -d "$BASEDIR/glslang" -o ! -d "$BASEDIR/glslang/.git" -o -d "$BASEDIR/glslang/.svn" ]; then create_glslang fi update_glslang build_glslang fi if [ $INCLUDE_SPIRV_TOOLS == "true" ]; then if [ ! -d "$BASEDIR/spirv-tools" -o ! -d "$BASEDIR/spirv-tools/.git" ]; then create_spirv-tools fi update_spirv-tools build_spirv-tools fi