blob: 6f87903ad4c7ad20c9dd069fad82bdd40f311651 [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
Karl Schultzece13962016-09-27 18:38:02 -06006GLSLANG_REVISION=$(cat "${PWD}"/glslang_revision)
7SPIRV_TOOLS_REVISION=$(cat "${PWD}"/spirv-tools_revision)
8SPIRV_HEADERS_REVISION=$(cat "${PWD}"/spirv-headers_revision)
9echo "GLSLANG_REVISION=${GLSLANG_REVISION}"
10echo "SPIRV_TOOLS_REVISION=${SPIRV_TOOLS_REVISION}"
11echo "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 () {
Karl Schultzece13962016-09-27 18:38:02 -060017 rm -rf "${BASEDIR}"/glslang
18 echo "Creating local glslang repository (${BASEDIR}/glslang)."
19 mkdir -p "${BASEDIR}"/glslang
20 cd "${BASEDIR}"/glslang
Peter Lohrmann18c06a22016-02-16 15:20:58 -080021 git clone https://github.com/KhronosGroup/glslang.git .
Karl Schultzece13962016-09-27 18:38:02 -060022 git checkout ${GLSLANG_REVISION}
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060023}
24
25function update_glslang () {
Karl Schultzece13962016-09-27 18:38:02 -060026 echo "Updating ${BASEDIR}/glslang"
27 cd "${BASEDIR}"/glslang
Cody Northrop5a4883b2015-07-08 09:53:03 -060028 git fetch --all
Karl Schultzece13962016-09-27 18:38:02 -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 () {
Karl Schultzece13962016-09-27 18:38:02 -060033 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 .
Karl Schultzece13962016-09-27 18:38:02 -060038 git checkout ${SPIRV_TOOLS_REVISION}
39 mkdir -p "${BASEDIR}"/spirv-tools/external/spirv-headers
40 cd "${BASEDIR}"/spirv-tools/external/spirv-headers
GregF2d395382016-06-17 12:26:49 -060041 git clone https://github.com/KhronosGroup/SPIRV-Headers .
Karl Schultzece13962016-09-27 18:38:02 -060042 git checkout ${SPIRV_HEADERS_REVISION}
Cody Northrop85d4a802015-12-29 14:42:24 -070043}
44
45function update_spirv-tools () {
Karl Schultzece13962016-09-27 18:38:02 -060046 echo "Updating ${BASEDIR}/spirv-tools"
47 cd "${BASEDIR}"/spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -070048 git fetch --all
Karl Schultzece13962016-09-27 18:38:02 -060049 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
GregF2d395382016-06-17 12:26:49 -060053 git clone https://github.com/KhronosGroup/SPIRV-Headers .
54 else
Karl Schultzece13962016-09-27 18:38:02 -060055 cd "${BASEDIR}"/spirv-tools/external/spirv-headers
GregF2d395382016-06-17 12:26:49 -060056 git fetch --all
GregF2d395382016-06-17 12:26:49 -060057 fi
Karl Schultzece13962016-09-27 18:38:02 -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 () {
Karl Schultzece13962016-09-27 18:38:02 -060062 echo "Building ${BASEDIR}/glslang"
63 cd "${BASEDIR}"/glslang
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060064 mkdir -p build
65 cd build
66 cmake -D CMAKE_BUILD_TYPE=Release ..
Cody Northrop0dd71d82016-09-22 13:32:04 -060067 make -j $(nproc)
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060068 make install
69}
70
Cody Northrop85d4a802015-12-29 14:42:24 -070071function build_spirv-tools () {
Karl Schultzece13962016-09-27 18:38:02 -060072 echo "Building ${BASEDIR}/spirv-tools"
73 cd "${BASEDIR}"/spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -070074 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
Karl Schultzece13962016-09-27 18:38:02 -0600118if [ ${INCLUDE_GLSLANG} == "true" ]; then
119 if [ ! -d "${BASEDIR}/glslang" -o ! -d "${BASEDIR}/glslang/.git" -o -d "${BASEDIR}/glslang/.svn" ]; then
Cody Northrop73f0fd72015-12-29 16:25:10 -0700120 create_glslang
121 fi
122 update_glslang
123 build_glslang
124fi
125
126
Karl Schultzece13962016-09-27 18:38:02 -0600127if [ ${INCLUDE_SPIRV_TOOLS} == "true" ]; then
128 if [ ! -d "${BASEDIR}/spirv-tools" -o ! -d "${BASEDIR}/spirv-tools/.git" ]; then
Cody Northrop85d4a802015-12-29 14:42:24 -0700129 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