blob: 43992e212dcdf067f591e5ae9e0281c78305750a [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
Karl Schultzdb27d512016-07-07 10:41:25 -060028 # Special case for this particular revision:
29 # Pull in a patch that fixes a compilation issue with g++ 5.3
30 # See https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/issues/681
31 if [ $GLSLANG_REVISION == "4678ca9dacfec7a084dbc69bbe568bdad6889f1b" ] ;
32 then
33 git checkout $GLSLANG_REVISION -B temp1610
34 git cherry-pick 880bf36cacee1cfce7d5d94991eb18c9e2d59d39
35 fi
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060036}
37
Cody Northrop85d4a802015-12-29 14:42:24 -070038function create_spirv-tools () {
39 rm -rf $BASEDIR/spirv-tools
40 echo "Creating local spirv-tools repository ($BASEDIR/spirv-tools)."
41 mkdir -p $BASEDIR/spirv-tools
42 cd $BASEDIR/spirv-tools
Peter Lohrmann18c06a22016-02-16 15:20:58 -080043 git clone https://github.com/KhronosGroup/SPIRV-Tools.git .
Cody Northrop85d4a802015-12-29 14:42:24 -070044 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060045 mkdir -p $BASEDIR/spirv-tools/external/spirv-headers
46 cd $BASEDIR/spirv-tools/external/spirv-headers
47 git clone https://github.com/KhronosGroup/SPIRV-Headers .
Cody Northrop85d4a802015-12-29 14:42:24 -070048}
49
50function update_spirv-tools () {
51 echo "Updating $BASEDIR/spirv-tools"
52 cd $BASEDIR/spirv-tools
53 git fetch --all
54 git checkout $SPIRV_TOOLS_REVISION
GregF2d395382016-06-17 12:26:49 -060055 if [ ! -d "$BASEDIR/spirv-tools/external/spirv-headers" -o ! -d "$BASEDIR/spirv-tools/external/spirv-headers/.git" ]; then
56 mkdir -p $BASEDIR/spirv-tools/external/spirv-headers
57 cd $BASEDIR/spirv-tools/external/spirv-headers
58 git clone https://github.com/KhronosGroup/SPIRV-Headers .
59 else
60 cd $BASEDIR/spirv-tools/external/spirv-headers
61 git fetch --all
62 git pull
63 fi
Cody Northrop85d4a802015-12-29 14:42:24 -070064}
65
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060066function build_glslang () {
Courtney Goeltzenleuchterf000ccf2015-01-07 13:35:32 -070067 echo "Building $BASEDIR/glslang"
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060068 cd $BASEDIR/glslang
69 mkdir -p build
70 cd build
71 cmake -D CMAKE_BUILD_TYPE=Release ..
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060072 make
73 make install
74}
75
Cody Northrop85d4a802015-12-29 14:42:24 -070076function build_spirv-tools () {
77 echo "Building $BASEDIR/spirv-tools"
78 cd $BASEDIR/spirv-tools
79 mkdir -p build
80 cd build
81 cmake -D CMAKE_BUILD_TYPE=Release ..
82 make -j $(nproc)
83}
84
Cody Northrop73f0fd72015-12-29 16:25:10 -070085# If any options are provided, just compile those tools
86# If no options are provided, build everything
87INCLUDE_GLSLANG=false
Cody Northrop73f0fd72015-12-29 16:25:10 -070088INCLUDE_SPIRV_TOOLS=false
Cody Northrope2905f62015-11-30 13:40:50 -070089
Cody Northrop73f0fd72015-12-29 16:25:10 -070090if [ "$#" == 0 ]; then
GregF149e6c62016-02-19 11:50:05 -070091 echo "Building glslang, spirv-tools"
Cody Northrop73f0fd72015-12-29 16:25:10 -070092 INCLUDE_GLSLANG=true
Cody Northrop73f0fd72015-12-29 16:25:10 -070093 INCLUDE_SPIRV_TOOLS=true
94else
95 # Parse options
96 while [[ $# > 0 ]]
97 do
98 option="$1"
Cody Northrope2905f62015-11-30 13:40:50 -070099
Cody Northrop73f0fd72015-12-29 16:25:10 -0700100 case $option in
101 # options to specify build of glslang components
102 -g|--glslang)
103 INCLUDE_GLSLANG=true
104 echo "Building glslang ($option)"
105 ;;
Cody Northrop73f0fd72015-12-29 16:25:10 -0700106 # options to specify build of spirv-tools components
107 -s|--spirv-tools)
108 INCLUDE_SPIRV_TOOLS=true
109 echo "Building spirv-tools ($option)"
110 ;;
111 *)
112 echo "Unrecognized option: $option"
113 echo "Try the following:"
114 echo " -g | --glslang # enable glslang"
Cody Northrop73f0fd72015-12-29 16:25:10 -0700115 echo " -s | --spirv-tools # enable spirv-tools"
116 exit 1
117 ;;
118 esac
119 shift
120 done
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -0600121fi
Cody Northrope2905f62015-11-30 13:40:50 -0700122
Cody Northrop73f0fd72015-12-29 16:25:10 -0700123if [ $INCLUDE_GLSLANG == "true" ]; then
124 if [ ! -d "$BASEDIR/glslang" -o ! -d "$BASEDIR/glslang/.git" -o -d "$BASEDIR/glslang/.svn" ]; then
125 create_glslang
126 fi
127 update_glslang
128 build_glslang
129fi
130
131
Cody Northrop73f0fd72015-12-29 16:25:10 -0700132if [ $INCLUDE_SPIRV_TOOLS == "true" ]; then
Cody Northrop85d4a802015-12-29 14:42:24 -0700133 if [ ! -d "$BASEDIR/spirv-tools" -o ! -d "$BASEDIR/spirv-tools/.git" ]; then
134 create_spirv-tools
135 fi
Cody Northrop85d4a802015-12-29 14:42:24 -0700136 update_spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -0700137 build_spirv-tools
Cody Northrope2905f62015-11-30 13:40:50 -0700138fi