layers: Add binding between cmd buffer and bufferView
[platform/upstream/Vulkan-LoaderAndValidationLayers.git] / update_external_sources.sh
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