blob: a124e58bb5f327d5a480651931bb7787d3f62455 [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)
Cody Northrop5934a882015-05-12 16:23:59 -06008echo "GLSLANG_REVISION=$GLSLANG_REVISION"
Cody Northrop85d4a802015-12-29 14:42:24 -07009echo "SPIRV_TOOLS_REVISION=$SPIRV_TOOLS_REVISION"
Courtney Goeltzenleuchter5120b842014-10-29 17:50:15 -060010
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060011BUILDDIR=$PWD
Jon Ashburn17c64682016-05-02 08:39:14 -060012BASEDIR=$BUILDDIR/external
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060013
14function create_glslang () {
15 rm -rf $BASEDIR/glslang
Courtney Goeltzenleuchterf000ccf2015-01-07 13:35:32 -070016 echo "Creating local glslang repository ($BASEDIR/glslang)."
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060017 mkdir -p $BASEDIR/glslang
18 cd $BASEDIR/glslang
Peter Lohrmann18c06a22016-02-16 15:20:58 -080019 git clone https://github.com/KhronosGroup/glslang.git .
Courtney Goeltzenleuchtercd9f8742015-10-08 09:06:53 -060020 git checkout $GLSLANG_REVISION
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060021}
22
23function update_glslang () {
24 echo "Updating $BASEDIR/glslang"
25 cd $BASEDIR/glslang
Cody Northrop5a4883b2015-07-08 09:53:03 -060026 git fetch --all
Courtney Goeltzenleuchtercd9f8742015-10-08 09:06:53 -060027 git checkout $GLSLANG_REVISION
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060028}
29
Cody Northrop85d4a802015-12-29 14:42:24 -070030function create_spirv-tools () {
31 rm -rf $BASEDIR/spirv-tools
32 echo "Creating local spirv-tools repository ($BASEDIR/spirv-tools)."
33 mkdir -p $BASEDIR/spirv-tools
34 cd $BASEDIR/spirv-tools
Peter Lohrmann18c06a22016-02-16 15:20:58 -080035 git clone https://github.com/KhronosGroup/SPIRV-Tools.git .
Cody Northrop85d4a802015-12-29 14:42:24 -070036 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060037 mkdir -p $BASEDIR/spirv-tools/external/spirv-headers
38 cd $BASEDIR/spirv-tools/external/spirv-headers
39 git clone https://github.com/KhronosGroup/SPIRV-Headers .
Cody Northrop85d4a802015-12-29 14:42:24 -070040}
41
42function update_spirv-tools () {
43 echo "Updating $BASEDIR/spirv-tools"
44 cd $BASEDIR/spirv-tools
45 git fetch --all
46 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060047 if [ ! -d "$BASEDIR/spirv-tools/external/spirv-headers" -o ! -d "$BASEDIR/spirv-tools/external/spirv-headers/.git" ]; then
48 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 .
51 else
52 cd $BASEDIR/spirv-tools/external/spirv-headers
53 git fetch --all
54 git pull
55 fi
Cody Northrop85d4a802015-12-29 14:42:24 -070056}
57
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060058function build_glslang () {
Courtney Goeltzenleuchterf000ccf2015-01-07 13:35:32 -070059 echo "Building $BASEDIR/glslang"
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060060 cd $BASEDIR/glslang
61 mkdir -p build
62 cd build
63 cmake -D CMAKE_BUILD_TYPE=Release ..
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060064 make
65 make install
66}
67
Cody Northrop85d4a802015-12-29 14:42:24 -070068function build_spirv-tools () {
69 echo "Building $BASEDIR/spirv-tools"
70 cd $BASEDIR/spirv-tools
71 mkdir -p build
72 cd build
73 cmake -D CMAKE_BUILD_TYPE=Release ..
74 make -j $(nproc)
75}
76
Cody Northrop73f0fd72015-12-29 16:25:10 -070077# If any options are provided, just compile those tools
78# If no options are provided, build everything
79INCLUDE_GLSLANG=false
Cody Northrop73f0fd72015-12-29 16:25:10 -070080INCLUDE_SPIRV_TOOLS=false
Cody Northrope2905f62015-11-30 13:40:50 -070081
Cody Northrop73f0fd72015-12-29 16:25:10 -070082if [ "$#" == 0 ]; then
GregF149e6c62016-02-19 11:50:05 -070083 echo "Building glslang, spirv-tools"
Cody Northrop73f0fd72015-12-29 16:25:10 -070084 INCLUDE_GLSLANG=true
Cody Northrop73f0fd72015-12-29 16:25:10 -070085 INCLUDE_SPIRV_TOOLS=true
86else
87 # Parse options
88 while [[ $# > 0 ]]
89 do
90 option="$1"
Cody Northrope2905f62015-11-30 13:40:50 -070091
Cody Northrop73f0fd72015-12-29 16:25:10 -070092 case $option in
93 # options to specify build of glslang components
94 -g|--glslang)
95 INCLUDE_GLSLANG=true
96 echo "Building glslang ($option)"
97 ;;
Cody Northrop73f0fd72015-12-29 16:25:10 -070098 # options to specify build of spirv-tools components
99 -s|--spirv-tools)
100 INCLUDE_SPIRV_TOOLS=true
101 echo "Building spirv-tools ($option)"
102 ;;
103 *)
104 echo "Unrecognized option: $option"
105 echo "Try the following:"
106 echo " -g | --glslang # enable glslang"
Cody Northrop73f0fd72015-12-29 16:25:10 -0700107 echo " -s | --spirv-tools # enable spirv-tools"
108 exit 1
109 ;;
110 esac
111 shift
112 done
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -0600113fi
Cody Northrope2905f62015-11-30 13:40:50 -0700114
Cody Northrop73f0fd72015-12-29 16:25:10 -0700115if [ $INCLUDE_GLSLANG == "true" ]; then
116 if [ ! -d "$BASEDIR/glslang" -o ! -d "$BASEDIR/glslang/.git" -o -d "$BASEDIR/glslang/.svn" ]; then
117 create_glslang
118 fi
119 update_glslang
120 build_glslang
121fi
122
123
Cody Northrop73f0fd72015-12-29 16:25:10 -0700124if [ $INCLUDE_SPIRV_TOOLS == "true" ]; then
Cody Northrop85d4a802015-12-29 14:42:24 -0700125 if [ ! -d "$BASEDIR/spirv-tools" -o ! -d "$BASEDIR/spirv-tools/.git" ]; then
126 create_spirv-tools
127 fi
Cody Northrop85d4a802015-12-29 14:42:24 -0700128 update_spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -0700129 build_spirv-tools
Cody Northrope2905f62015-11-30 13:40:50 -0700130fi