Home | History | Annotate | Download | only in vulkan-validation-layers
      1 #!/bin/bash
      2 # Update source for glslang, LunarGLASS, spirv-tools
      3 
      4 set -e
      5 
      6 GLSLANG_REVISION=$(cat "${PWD}"/glslang_revision)
      7 SPIRV_TOOLS_REVISION=$(cat "${PWD}"/spirv-tools_revision)
      8 SPIRV_HEADERS_REVISION=$(cat "${PWD}"/spirv-headers_revision)
      9 echo "GLSLANG_REVISION=${GLSLANG_REVISION}"
     10 echo "SPIRV_TOOLS_REVISION=${SPIRV_TOOLS_REVISION}"
     11 echo "SPIRV_HEADERS_REVISION=${SPIRV_HEADERS_REVISION}"
     12 
     13 BUILDDIR=$PWD
     14 BASEDIR=$BUILDDIR/external
     15 
     16 function create_glslang () {
     17    rm -rf "${BASEDIR}"/glslang
     18    echo "Creating local glslang repository (${BASEDIR}/glslang)."
     19    mkdir -p "${BASEDIR}"/glslang
     20    cd "${BASEDIR}"/glslang
     21    git clone https://github.com/KhronosGroup/glslang.git .
     22    git checkout ${GLSLANG_REVISION}
     23 }
     24 
     25 function update_glslang () {
     26    echo "Updating ${BASEDIR}/glslang"
     27    cd "${BASEDIR}"/glslang
     28    git fetch --all
     29    git checkout --force ${GLSLANG_REVISION}
     30 }
     31 
     32 function create_spirv-tools () {
     33    rm -rf "${BASEDIR}"/spirv-tools
     34    echo "Creating local spirv-tools repository (${BASEDIR}/spirv-tools)."
     35    mkdir -p "${BASEDIR}"/spirv-tools
     36    cd "${BASEDIR}"/spirv-tools
     37    git clone https://github.com/KhronosGroup/SPIRV-Tools.git .
     38    git checkout ${SPIRV_TOOLS_REVISION}
     39    mkdir -p "${BASEDIR}"/spirv-tools/external/spirv-headers
     40    cd "${BASEDIR}"/spirv-tools/external/spirv-headers
     41    git clone https://github.com/KhronosGroup/SPIRV-Headers .
     42    git checkout ${SPIRV_HEADERS_REVISION}
     43 }
     44 
     45 function update_spirv-tools () {
     46    echo "Updating ${BASEDIR}/spirv-tools"
     47    cd "${BASEDIR}"/spirv-tools
     48    git fetch --all
     49    git checkout ${SPIRV_TOOLS_REVISION}
     50    if [ ! -d "${BASEDIR}/spirv-tools/external/spirv-headers" -o ! -d "${BASEDIR}/spirv-tools/external/spirv-headers/.git" ]; then
     51       mkdir -p "${BASEDIR}"/spirv-tools/external/spirv-headers
     52       cd "${BASEDIR}"/spirv-tools/external/spirv-headers
     53       git clone https://github.com/KhronosGroup/SPIRV-Headers .
     54    else
     55       cd "${BASEDIR}"/spirv-tools/external/spirv-headers
     56       git fetch --all
     57    fi
     58    git checkout ${SPIRV_HEADERS_REVISION}
     59 }
     60 
     61 function build_glslang () {
     62    echo "Building ${BASEDIR}/glslang"
     63    cd "${BASEDIR}"/glslang
     64    mkdir -p build
     65    cd build
     66    cmake -D CMAKE_BUILD_TYPE=Release ..
     67    make -j $(nproc)
     68    make install
     69 }
     70 
     71 function build_spirv-tools () {
     72    echo "Building ${BASEDIR}/spirv-tools"
     73    cd "${BASEDIR}"/spirv-tools
     74    mkdir -p build
     75    cd build
     76    cmake -D CMAKE_BUILD_TYPE=Release ..
     77    make -j $(nproc)
     78 }
     79 
     80 # If any options are provided, just compile those tools
     81 # If no options are provided, build everything
     82 INCLUDE_GLSLANG=false
     83 INCLUDE_SPIRV_TOOLS=false
     84 
     85 if [ "$#" == 0 ]; then
     86   echo "Building glslang, spirv-tools"
     87   INCLUDE_GLSLANG=true
     88   INCLUDE_SPIRV_TOOLS=true
     89 else
     90   # Parse options
     91   while [[ $# > 0 ]]
     92   do
     93     option="$1"
     94 
     95     case $option in
     96         # options to specify build of glslang components
     97         -g|--glslang)
     98         INCLUDE_GLSLANG=true
     99         echo "Building glslang ($option)"
    100         ;;
    101         # options to specify build of spirv-tools components
    102         -s|--spirv-tools)
    103         INCLUDE_SPIRV_TOOLS=true
    104         echo "Building spirv-tools ($option)"
    105         ;;
    106         *)
    107         echo "Unrecognized option: $option"
    108         echo "Try the following:"
    109         echo " -g | --glslang      # enable glslang"
    110         echo " -s | --spirv-tools  # enable spirv-tools"
    111         exit 1
    112         ;;
    113     esac
    114     shift
    115   done
    116 fi
    117 
    118 if [ ${INCLUDE_GLSLANG} == "true" ]; then
    119   if [ ! -d "${BASEDIR}/glslang" -o ! -d "${BASEDIR}/glslang/.git" -o -d "${BASEDIR}/glslang/.svn" ]; then
    120      create_glslang
    121   fi
    122   update_glslang
    123   build_glslang
    124 fi
    125 
    126 
    127 if [ ${INCLUDE_SPIRV_TOOLS} == "true" ]; then
    128     if [ ! -d "${BASEDIR}/spirv-tools" -o ! -d "${BASEDIR}/spirv-tools/.git" ]; then
    129        create_spirv-tools
    130     fi
    131     update_spirv-tools
    132     build_spirv-tools
    133 fi
    134