blob: ea294f6abc01995d10aa6a55a817bd3dcd7c63a4 [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
Mark Young2363ee72016-08-26 11:17:39 -060029 git checkout --force $GLSLANG_REVISION
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060030}
31
Cody Northrop85d4a802015-12-29 14:42:24 -070032function 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
Peter Lohrmann18c06a22016-02-16 15:20:58 -080037 git clone https://github.com/KhronosGroup/SPIRV-Tools.git .
Cody Northrop85d4a802015-12-29 14:42:24 -070038 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060039 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 .
Mark Young12238372016-08-11 08:46:55 -060042 git checkout $SPIRV_HEADERS_REVISION
Cody Northrop85d4a802015-12-29 14:42:24 -070043}
44
45function update_spirv-tools () {
46 echo "Updating $BASEDIR/spirv-tools"
47 cd $BASEDIR/spirv-tools
48 git fetch --all
49 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060050 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
GregF2d395382016-06-17 12:26:49 -060057 fi
Mark Young12238372016-08-11 08:46:55 -060058 git checkout $SPIRV_HEADERS_REVISION
Cody Northrop85d4a802015-12-29 14:42:24 -070059}
60
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060061function build_glslang () {
Courtney Goeltzenleuchterf000ccf2015-01-07 13:35:32 -070062 echo "Building $BASEDIR/glslang"
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060063 cd $BASEDIR/glslang
64 mkdir -p build
65 cd build
66 cmake -D CMAKE_BUILD_TYPE=Release ..
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060067 make
68 make install
69}
70
Cody Northrop85d4a802015-12-29 14:42:24 -070071function 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
Cody Northrop73f0fd72015-12-29 16:25:10 -070080# If any options are provided, just compile those tools
81# If no options are provided, build everything
82INCLUDE_GLSLANG=false
Cody Northrop73f0fd72015-12-29 16:25:10 -070083INCLUDE_SPIRV_TOOLS=false
Cody Northrope2905f62015-11-30 13:40:50 -070084
Cody Northrop73f0fd72015-12-29 16:25:10 -070085if [ "$#" == 0 ]; then
GregF149e6c62016-02-19 11:50:05 -070086 echo "Building glslang, spirv-tools"
Cody Northrop73f0fd72015-12-29 16:25:10 -070087 INCLUDE_GLSLANG=true
Cody Northrop73f0fd72015-12-29 16:25:10 -070088 INCLUDE_SPIRV_TOOLS=true
89else
90 # Parse options
91 while [[ $# > 0 ]]
92 do
93 option="$1"
Cody Northrope2905f62015-11-30 13:40:50 -070094
Cody Northrop73f0fd72015-12-29 16:25:10 -070095 case $option in
96 # options to specify build of glslang components
97 -g|--glslang)
98 INCLUDE_GLSLANG=true
99 echo "Building glslang ($option)"
100 ;;
Cody Northrop73f0fd72015-12-29 16:25:10 -0700101 # 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"
Cody Northrop73f0fd72015-12-29 16:25:10 -0700110 echo " -s | --spirv-tools # enable spirv-tools"
111 exit 1
112 ;;
113 esac
114 shift
115 done
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -0600116fi
Cody Northrope2905f62015-11-30 13:40:50 -0700117
Cody Northrop73f0fd72015-12-29 16:25:10 -0700118if [ $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
124fi
125
126
Cody Northrop73f0fd72015-12-29 16:25:10 -0700127if [ $INCLUDE_SPIRV_TOOLS == "true" ]; then
Cody Northrop85d4a802015-12-29 14:42:24 -0700128 if [ ! -d "$BASEDIR/spirv-tools" -o ! -d "$BASEDIR/spirv-tools/.git" ]; then
129 create_spirv-tools
130 fi
Cody Northrop85d4a802015-12-29 14:42:24 -0700131 update_spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -0700132 build_spirv-tools
Cody Northrope2905f62015-11-30 13:40:50 -0700133fi