blob: 544002305bb3344b2acaf40d4fc9feae481e39bf [file] [log] [blame]
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -06001#!/bin/bash
Mike Weiblen22489252017-02-16 17:00:35 -07002# Update source for glslang, spirv-tools
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -06003
Cody Northrop5934a882015-05-12 16:23:59 -06004set -e
5
Cody Northrop69ea6d02016-12-02 09:10:20 -07006if [[ $(uname) == "Linux" ]]; then
7 CURRENT_DIR="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
Cody Northrop5844be82016-12-02 09:28:42 -07008 CORE_COUNT=$(nproc || echo 4)
Cody Northrop69ea6d02016-12-02 09:10:20 -07009elif [[ $(uname) == "Darwin" ]]; then
Michael Jurka5eba0652016-12-19 16:31:43 +010010 CURRENT_DIR="$(dirname "$(python -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' ${BASH_SOURCE[0]})")"
Cody Northrop5844be82016-12-02 09:28:42 -070011 CORE_COUNT=$(sysctl -n hw.ncpu || echo 4)
Cody Northrop69ea6d02016-12-02 09:10:20 -070012fi
Cody Northrop5844be82016-12-02 09:28:42 -070013echo CORE_COUNT=$CORE_COUNT
Cody Northrop69ea6d02016-12-02 09:10:20 -070014
Mark Lobodzinskica2604b2016-11-22 08:02:59 -070015REVISION_DIR="$CURRENT_DIR/external_revisions"
Mark Lobodzinski1e4da612016-11-18 13:20:36 -070016
Mike Weiblen22489252017-02-16 17:00:35 -070017GLSLANG_GITURL=$(cat "${REVISION_DIR}/glslang_giturl")
Mark Lobodzinskica2604b2016-11-22 08:02:59 -070018GLSLANG_REVISION=$(cat "${REVISION_DIR}/glslang_revision")
Mike Weiblen22489252017-02-16 17:00:35 -070019SPIRV_TOOLS_GITURL=$(cat "${REVISION_DIR}/spirv-tools_giturl")
Mark Lobodzinskica2604b2016-11-22 08:02:59 -070020SPIRV_TOOLS_REVISION=$(cat "${REVISION_DIR}/spirv-tools_revision")
Mike Weiblen22489252017-02-16 17:00:35 -070021SPIRV_HEADERS_GITURL=$(cat "${REVISION_DIR}/spirv-headers_giturl")
Mark Lobodzinskica2604b2016-11-22 08:02:59 -070022SPIRV_HEADERS_REVISION=$(cat "${REVISION_DIR}/spirv-headers_revision")
Mike Weiblen22489252017-02-16 17:00:35 -070023
24echo "GLSLANG_GITURL=${GLSLANG_GITURL}"
Karl Schultzece13962016-09-27 18:38:02 -060025echo "GLSLANG_REVISION=${GLSLANG_REVISION}"
Mike Weiblen22489252017-02-16 17:00:35 -070026echo "SPIRV_TOOLS_GITURL=${SPIRV_TOOLS_GITURL}"
Karl Schultzece13962016-09-27 18:38:02 -060027echo "SPIRV_TOOLS_REVISION=${SPIRV_TOOLS_REVISION}"
Mike Weiblen22489252017-02-16 17:00:35 -070028echo "SPIRV_HEADERS_GITURL=${SPIRV_HEADERS_GITURL}"
Karl Schultzece13962016-09-27 18:38:02 -060029echo "SPIRV_HEADERS_REVISION=${SPIRV_HEADERS_REVISION}"
Courtney Goeltzenleuchter5120b842014-10-29 17:50:15 -060030
Mark Lobodzinskica2604b2016-11-22 08:02:59 -070031BUILDDIR=${CURRENT_DIR}
32BASEDIR="$BUILDDIR/external"
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060033
34function create_glslang () {
Karl Schultzece13962016-09-27 18:38:02 -060035 rm -rf "${BASEDIR}"/glslang
36 echo "Creating local glslang repository (${BASEDIR}/glslang)."
37 mkdir -p "${BASEDIR}"/glslang
38 cd "${BASEDIR}"/glslang
Mike Weiblen22489252017-02-16 17:00:35 -070039 git clone ${GLSLANG_GITURL} .
Karl Schultzece13962016-09-27 18:38:02 -060040 git checkout ${GLSLANG_REVISION}
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060041}
42
43function update_glslang () {
Karl Schultzece13962016-09-27 18:38:02 -060044 echo "Updating ${BASEDIR}/glslang"
45 cd "${BASEDIR}"/glslang
Cody Northrop5a4883b2015-07-08 09:53:03 -060046 git fetch --all
Karl Schultzece13962016-09-27 18:38:02 -060047 git checkout --force ${GLSLANG_REVISION}
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060048}
49
Cody Northrop85d4a802015-12-29 14:42:24 -070050function create_spirv-tools () {
Karl Schultzece13962016-09-27 18:38:02 -060051 rm -rf "${BASEDIR}"/spirv-tools
52 echo "Creating local spirv-tools repository (${BASEDIR}/spirv-tools)."
53 mkdir -p "${BASEDIR}"/spirv-tools
54 cd "${BASEDIR}"/spirv-tools
Mike Weiblen22489252017-02-16 17:00:35 -070055 git clone ${SPIRV_TOOLS_GITURL} .
Karl Schultzece13962016-09-27 18:38:02 -060056 git checkout ${SPIRV_TOOLS_REVISION}
57 mkdir -p "${BASEDIR}"/spirv-tools/external/spirv-headers
58 cd "${BASEDIR}"/spirv-tools/external/spirv-headers
Mike Weiblen22489252017-02-16 17:00:35 -070059 git clone ${SPIRV_HEADERS_GITURL} .
Karl Schultzece13962016-09-27 18:38:02 -060060 git checkout ${SPIRV_HEADERS_REVISION}
Cody Northrop85d4a802015-12-29 14:42:24 -070061}
62
63function update_spirv-tools () {
Karl Schultzece13962016-09-27 18:38:02 -060064 echo "Updating ${BASEDIR}/spirv-tools"
65 cd "${BASEDIR}"/spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -070066 git fetch --all
Karl Schultzece13962016-09-27 18:38:02 -060067 git checkout ${SPIRV_TOOLS_REVISION}
68 if [ ! -d "${BASEDIR}/spirv-tools/external/spirv-headers" -o ! -d "${BASEDIR}/spirv-tools/external/spirv-headers/.git" ]; then
69 mkdir -p "${BASEDIR}"/spirv-tools/external/spirv-headers
70 cd "${BASEDIR}"/spirv-tools/external/spirv-headers
Mike Weiblen22489252017-02-16 17:00:35 -070071 git clone ${SPIRV_HEADERS_GITURL} .
GregF2d395382016-06-17 12:26:49 -060072 else
Karl Schultzece13962016-09-27 18:38:02 -060073 cd "${BASEDIR}"/spirv-tools/external/spirv-headers
GregF2d395382016-06-17 12:26:49 -060074 git fetch --all
GregF2d395382016-06-17 12:26:49 -060075 fi
Karl Schultzece13962016-09-27 18:38:02 -060076 git checkout ${SPIRV_HEADERS_REVISION}
Cody Northrop85d4a802015-12-29 14:42:24 -070077}
78
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060079function build_glslang () {
Karl Schultzece13962016-09-27 18:38:02 -060080 echo "Building ${BASEDIR}/glslang"
81 cd "${BASEDIR}"/glslang
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060082 mkdir -p build
83 cd build
84 cmake -D CMAKE_BUILD_TYPE=Release ..
Cody Northrop5844be82016-12-02 09:28:42 -070085 make -j $CORE_COUNT
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -060086 make install
87}
88
Cody Northrop85d4a802015-12-29 14:42:24 -070089function build_spirv-tools () {
Karl Schultzece13962016-09-27 18:38:02 -060090 echo "Building ${BASEDIR}/spirv-tools"
91 cd "${BASEDIR}"/spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -070092 mkdir -p build
93 cd build
94 cmake -D CMAKE_BUILD_TYPE=Release ..
Cody Northrop5844be82016-12-02 09:28:42 -070095 make -j $CORE_COUNT
Cody Northrop85d4a802015-12-29 14:42:24 -070096}
97
Cody Northrop73f0fd72015-12-29 16:25:10 -070098# If any options are provided, just compile those tools
99# If no options are provided, build everything
100INCLUDE_GLSLANG=false
Cody Northrop73f0fd72015-12-29 16:25:10 -0700101INCLUDE_SPIRV_TOOLS=false
Cody Northrope2905f62015-11-30 13:40:50 -0700102
Cody Northrop73f0fd72015-12-29 16:25:10 -0700103if [ "$#" == 0 ]; then
GregF149e6c62016-02-19 11:50:05 -0700104 echo "Building glslang, spirv-tools"
Cody Northrop73f0fd72015-12-29 16:25:10 -0700105 INCLUDE_GLSLANG=true
Cody Northrop73f0fd72015-12-29 16:25:10 -0700106 INCLUDE_SPIRV_TOOLS=true
107else
108 # Parse options
109 while [[ $# > 0 ]]
110 do
111 option="$1"
Cody Northrope2905f62015-11-30 13:40:50 -0700112
Cody Northrop73f0fd72015-12-29 16:25:10 -0700113 case $option in
114 # options to specify build of glslang components
115 -g|--glslang)
116 INCLUDE_GLSLANG=true
117 echo "Building glslang ($option)"
118 ;;
Cody Northrop73f0fd72015-12-29 16:25:10 -0700119 # options to specify build of spirv-tools components
120 -s|--spirv-tools)
121 INCLUDE_SPIRV_TOOLS=true
122 echo "Building spirv-tools ($option)"
123 ;;
124 *)
125 echo "Unrecognized option: $option"
126 echo "Try the following:"
127 echo " -g | --glslang # enable glslang"
Cody Northrop73f0fd72015-12-29 16:25:10 -0700128 echo " -s | --spirv-tools # enable spirv-tools"
129 exit 1
130 ;;
131 esac
132 shift
133 done
Courtney Goeltzenleuchter7f0a7be2014-10-17 18:21:42 -0600134fi
Cody Northrope2905f62015-11-30 13:40:50 -0700135
Karl Schultzece13962016-09-27 18:38:02 -0600136if [ ${INCLUDE_GLSLANG} == "true" ]; then
137 if [ ! -d "${BASEDIR}/glslang" -o ! -d "${BASEDIR}/glslang/.git" -o -d "${BASEDIR}/glslang/.svn" ]; then
Cody Northrop73f0fd72015-12-29 16:25:10 -0700138 create_glslang
139 fi
140 update_glslang
141 build_glslang
142fi
143
144
Karl Schultzece13962016-09-27 18:38:02 -0600145if [ ${INCLUDE_SPIRV_TOOLS} == "true" ]; then
146 if [ ! -d "${BASEDIR}/spirv-tools" -o ! -d "${BASEDIR}/spirv-tools/.git" ]; then
Cody Northrop85d4a802015-12-29 14:42:24 -0700147 create_spirv-tools
148 fi
Cody Northrop85d4a802015-12-29 14:42:24 -0700149 update_spirv-tools
Cody Northrop85d4a802015-12-29 14:42:24 -0700150 build_spirv-tools
Cody Northrope2905f62015-11-30 13:40:50 -0700151fi