2 # Update source for glslang
6 if [[ $(uname) == "Linux" || $(uname) =~ "CYGWIN" ]]; then
7 CURRENT_DIR="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
8 CORE_COUNT=$(nproc || echo 4)
9 elif [[ $(uname) == "Darwin" ]]; then
10 CURRENT_DIR="$(dirname "$(python -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' ${BASH_SOURCE[0]})")"
11 CORE_COUNT=$(sysctl -n hw.ncpu || echo 4)
13 echo CURRENT_DIR=$CURRENT_DIR
14 echo CORE_COUNT=$CORE_COUNT
16 REVISION_DIR="$CURRENT_DIR/external_revisions"
18 git submodule update --init --recursive
20 # Use tr -d to remove line endings
21 GLSLANG_GITURL=$(cat "${REVISION_DIR}/glslang_giturl" | tr -d "\n\r")
22 GLSLANG_REVISION=$(cat "${REVISION_DIR}/glslang_revision" | tr -d "\n\r")
24 echo "GLSLANG_GITURL=${GLSLANG_GITURL}"
25 echo "GLSLANG_REVISION=${GLSLANG_REVISION}"
27 BUILDDIR=${CURRENT_DIR}
28 BASEDIR="$BUILDDIR/external"
30 function create_glslang () {
31 rm -rf "${BASEDIR}"/glslang
32 echo "Creating local glslang repository (${BASEDIR}/glslang)."
33 mkdir -p "${BASEDIR}"/glslang
34 cd "${BASEDIR}"/glslang
35 git clone ${GLSLANG_GITURL} .
36 git checkout ${GLSLANG_REVISION}
37 ./update_glslang_sources.py
40 function update_glslang () {
41 echo "Updating ${BASEDIR}/glslang"
42 cd "${BASEDIR}"/glslang
44 git checkout --force ${GLSLANG_REVISION}
45 ./update_glslang_sources.py
48 function build_glslang () {
49 echo "Building ${BASEDIR}/glslang"
50 cd "${BASEDIR}"/glslang
53 cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install ..
58 function create_moltenvk () {
59 rm -rf "${BASEDIR}"/MoltenVK
60 echo "Creating local MoltenVK repository (${BASEDIR}/MoltenVK)."
61 mkdir -p "${BASEDIR}"/MoltenVK
62 cd "${BASEDIR}"/MoltenVK
63 git clone --recurse-submodules https://github.com/KhronosGroup/MoltenVK.git "${BASEDIR}"/MoltenVK
66 function update_moltenvk () {
67 echo "Updating ${BASEDIR}/MoltenVK"
68 cd "${BASEDIR}"/MoltenVK
72 function build_moltenvk () {
73 echo "Building ${BASEDIR}/MoltenVK"
74 cd "${BASEDIR}"/MoltenVK
75 ./fetchDependencies --v-lvl-root "${BUILDDIR}" --glslang-root "${BASEDIR}/glslang"
76 xcodebuild -project MoltenVKPackaging.xcodeproj \
77 GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS MVK_LOGGING_ENABLED=0' \
78 -scheme "MoltenVK (Release)" build
82 INCLUDE_MOLTENVK=false
85 USE_IMPLICIT_COMPONENT_LIST=true
93 # options to specify build of glslang components
96 USE_IMPLICIT_COMPONENT_LIST=false
97 echo "Building glslang ($option)"
99 # options to specify build of moltenvk components
101 if [[ $(uname) == "Darwin" ]]; then
102 INCLUDE_MOLTENVK=true
103 USE_IMPLICIT_COMPONENT_LIST=false
104 echo "Building MoltenVK ($option)"
107 # options to specify build of spirv-tools components
109 echo "($option) is deprecated and is no longer necessary"
111 # option to specify skipping sync from git
114 echo "Skipping sync ($option)"
116 # option to specify skipping build
119 echo "Skipping build ($option)"
122 echo "Unrecognized option: $option"
123 echo "Usage: update_external_sources.sh [options]"
124 echo " Available options:"
125 echo " -g | --glslang # enable glslang component"
126 if [[ $(uname) == "Darwin" ]]; then
127 echo " -m | --moltenvk # enable moltenvk component"
129 echo " --no-sync # skip sync from git"
130 echo " --no-build # skip build"
131 echo " If any component enables are provided, only those components are enabled."
132 echo " If no component enables are provided, all components are enabled."
133 echo " Sync uses git to pull a specific revision."
134 echo " Build configures CMake, builds Release."
141 if [ ${USE_IMPLICIT_COMPONENT_LIST} == "true" ]; then
142 echo "Building glslang"
144 if [[ $(uname) == "Darwin" ]]; then
145 echo "Building MoltenVK"
146 INCLUDE_MOLTENVK=true
150 if [ ${INCLUDE_GLSLANG} == "true" ]; then
151 if [ ${NO_SYNC} == "false" ]; then
152 if [ ! -d "${BASEDIR}/glslang" -o ! -d "${BASEDIR}/glslang/.git" -o -d "${BASEDIR}/glslang/.svn" ]; then
157 if [ ${NO_BUILD} == "false" ]; then
162 if [ ${INCLUDE_MOLTENVK} == "true" ]; then
163 if [ ${NO_SYNC} == "false" ]; then
164 if [ ! -d "${BASEDIR}/MoltenVK" -o ! -d "${BASEDIR}/MoltenVK/.git" ]; then
169 if [ ${NO_BUILD} == "false" ]; then
170 echo "Building moltenvk"