blob: 59197f0911a0ea3d5881caf8633460c79a197ded [file] [log] [blame]
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -06001#!/bin/bash
Cody Northrop85d4a802015-12-29 14:42:24 -07002# Update source for glslang, LunarGLASS, spirv-tools
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -06003
Cody Northrop5934a882015-05-12 16:23:59 -06004set -e
5
Cody Northrop5934a882015-05-12 16:23:59 -06006GLSLANG_REVISION=$(cat $PWD/glslang_revision)
Cody Northrop85d4a802015-12-29 14:42:24 -07007SPIRV_TOOLS_REVISION=$(cat $PWD/spirv-tools_revision)
Mark Young12238372016-08-11 08:46:55 -06008SPIRV_HEADERS_REVISION=$(cat $PWD/spirv-headers_revision)
Cody Northrop5934a882015-05-12 16:23:59 -06009echo "GLSLANG_REVISION=$GLSLANG_REVISION"
Cody Northrop85d4a802015-12-29 14:42:24 -070010echo "SPIRV_TOOLS_REVISION=$SPIRV_TOOLS_REVISION"
Mark Young12238372016-08-11 08:46:55 -060011echo "SPIRV_HEADERS_REVISION=$SPIRV_HEADERS_REVISION"
Courtney Goeltzenleuchter5120b842014-10-29 17:50:15 -060012
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060013BUILDDIR=$PWD
Jon Ashburn17c64682016-05-02 08:39:14 -060014BASEDIR=$BUILDDIR/external
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060015
16function create_glslang () {
17 rm -rf $BASEDIR/glslang
Courtney Goeltzenleuchterf000ccf2015-01-07 13:35:32 -070018 echo "Creating local glslang repository ($BASEDIR/glslang)."
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060019 mkdir -p $BASEDIR/glslang
20 cd $BASEDIR/glslang
Peter Lohrmann18c06a22016-02-16 15:20:58 -080021 git clone https://github.com/KhronosGroup/glslang.git .
Courtney Goeltzenleuchtercd9f8742015-10-08 09:06:53 -060022 git checkout $GLSLANG_REVISION
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060023}
24
25function update_glslang () {
26 echo "Updating $BASEDIR/glslang"
27 cd $BASEDIR/glslang
Cody Northrop5a4883b2015-07-08 09:53:03 -060028 git fetch --all
Courtney Goeltzenleuchtercd9f8742015-10-08 09:06:53 -060029 git checkout $GLSLANG_REVISION
Karl Schultz168a62b2016-07-18 09:40:37 -060030 # Revert glslang a5c33d6ffb34ccede5b233bc724c907166b6e479
Karl Schultzdb27d512016-07-07 10:41:25 -060031 # See https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/681
Karl Schultz168a62b2016-07-18 09:40:37 -060032 git diff-index --quiet HEAD | true
33 rc=${PIPESTATUS[0]}
34 if (( $rc == 0 ))
Karl Schultzdb27d512016-07-07 10:41:25 -060035 then
Karl Schultz168a62b2016-07-18 09:40:37 -060036 echo "applying patch to revert glslang a5c33d"
37 git apply $BUILDDIR/glslang_revert_a5c33d.patch.txt
Karl Schultzdb27d512016-07-07 10:41:25 -060038 fi
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060039}
40
Cody Northrop85d4a802015-12-29 14:42:24 -070041function create_spirv-tools () {
42 rm -rf $BASEDIR/spirv-tools
43 echo "Creating local spirv-tools repository ($BASEDIR/spirv-tools)."
44 mkdir -p $BASEDIR/spirv-tools
45 cd $BASEDIR/spirv-tools
Peter Lohrmann18c06a22016-02-16 15:20:58 -080046 git clone https://github.com/KhronosGroup/SPIRV-Tools.git .
Cody Northrop85d4a802015-12-29 14:42:24 -070047 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060048 mkdir -p $BASEDIR/spirv-tools/external/spirv-headers
49 cd $BASEDIR/spirv-tools/external/spirv-headers
50 git clone https://github.com/KhronosGroup/SPIRV-Headers .
Mark Young12238372016-08-11 08:46:55 -060051 git checkout $SPIRV_HEADERS_REVISION
Cody Northrop85d4a802015-12-29 14:42:24 -070052}
53
54function update_spirv-tools () {
55 echo "Updating $BASEDIR/spirv-tools"
56 cd $BASEDIR/spirv-tools
57 git fetch --all
58 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060059 if [ ! -d "$BASEDIR/spirv-tools/external/spirv-headers" -o ! -d "$BASEDIR/spirv-tools/external/spirv-headers/.git" ]; then
60 mkdir -p $BASEDIR/spirv-tools/external/spirv-headers
61 cd $BASEDIR/spirv-tools/external/spirv-headers
62 git clone https://github.com/KhronosGroup/SPIRV-Headers .
63 else
64 cd $BASEDIR/spirv-tools/external/spirv-headers
65 git fetch --all
GregF2d395382016-06-17 12:26:49 -060066 fi
Mark Young12238372016-08-11 08:46:55 -060067 git checkout $SPIRV_HEADERS_REVISION
Cody Northrop85d4a802015-12-29 14:42:24 -070068}
69
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060070function build_glslang () {
Courtney Goeltzenleuchterf000ccf2015-01-07 13:35:32 -070071 echo "Building $BASEDIR/glslang"
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060072 cd $BASEDIR/glslang
73 mkdir -p build
74 cd build
75 cmake -D CMAKE_BUILD_TYPE=Release ..
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060076 make
77 make install
78}
79
Cody Northrop85d4a802015-12-29 14:42:24 -070080function build_spirv-tools () {
81 echo "Building $BASEDIR/spirv-tools"
82 cd $BASEDIR/spirv-tools
83 mkdir -p build
84 cd build
85 cmake -D CMAKE_BUILD_TYPE=Release ..
86 make -j $(nproc)
87}
88
Cody Northrop73f0fd72015-12-29 16:25:10 -070089# If any options are provided, just compile those tools
90# If no options are provided, build everything
91INCLUDE_GLSLANG=false
Cody Northrop73f0fd72015-12-29 16:25:10 -070092INCLUDE_SPIRV_TOOLS=false
Cody Northrope2905f62015-11-30 13:40:50 -070093
Cody Northrop73f0fd72015-12-29 16:25:10 -070094if [ "$#" == 0 ]; then
GregF149e6c62016-02-19 11:50:05 -070095 echo "Building glslang, spirv-tools"
Cody Northrop73f0fd72015-12-29 16:25:10 -070096 INCLUDE_GLSLANG=true
Cody Northrop73f0fd72015-12-29 16:25:10 -070097 INCLUDE_SPIRV_TOOLS=true
98else
99 # Parse options
100 while [[ $# > 0 ]]
101 do
102 option="$1"
Cody Northrope2905f62015-11-30 13:40:50 -0700103
Cody Northrop73f0fd72015-12-29 16:25:10 -0700104 case $option in
105 # options to specify build of glslang components
106 -g|--glslang)
107 INCLUDE_GLSLANG=true
108 echo "Building glslang ($option)"
109 ;;
Cody Northrop73f0fd72015-12-29 16:25:10 -0700110 # options to specify build of spirv-tools components
111 -s|--spirv-tools)
112 INCLUDE_SPIRV_TOOLS=true
113 echo "Building spirv-tools ($option)"
114 ;;
115 *)
116 echo "Unrecognized option: $option"
117 echo "Try the following:"
118 echo " -g | --glslang # enable glslang"
Cody Northrop73f0fd72015-12-29 16:25:10 -0700119 echo " -s | --spirv-tools # enable spirv-tools"
120 exit 1
121 ;;
122 esac
123 shift
124 done
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -0600125fi
Cody Northrope2905f62015-11-30 13:40:50 -0700126
Cody Northrop73f0fd72015-12-29 16:25:10 -0700127if [ $INCLUDE_GLSLANG == "true" ]; then
128 if [ ! -d "$BASEDIR/glslang" -o ! -d "$BASEDIR/glslang/.git" -o -d "$BASEDIR/glslang/.svn" ]; then
129 create_glslang
130 fi
131 update_glslang
132 build_glslang
133fi
134
135
Cody Northrop73f0fd72015-12-29 16:25:10 -0700136if [ $INCLUDE_SPIRV_TOOLS == "true" ]; then
Cody Northrop85d4a802015-12-29 14:42:24 -0700137 if [ ! -d "$BASEDIR/spirv-tools" -o ! -d "$BASEDIR/spirv-tools/.git" ]; then
138 create_spirv-tools
139 fi
Cody Northrop85d4a802015-12-29 14:42:24 -0700140 update_spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -0700141 build_spirv-tools
Cody Northrope2905f62015-11-30 13:40:50 -0700142fi