forked from KhronosGroup/Vulkan-LoaderAndValidationLayers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
update_external_sources.sh
executable file
·118 lines (104 loc) · 3.22 KB
/
update_external_sources.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#!/bin/bash
# Update source for glslang
set -e
if [[ $(uname) == "Linux" || $(uname) =~ "CYGWIN" ]]; then
CURRENT_DIR="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")"
CORE_COUNT=$(nproc || echo 4)
elif [[ $(uname) == "Darwin" ]]; then
CURRENT_DIR="$(dirname "$(python -c 'import os,sys;print(os.path.realpath(sys.argv[1]))' ${BASH_SOURCE[0]})")"
CORE_COUNT=$(sysctl -n hw.ncpu || echo 4)
fi
echo CURRENT_DIR=$CURRENT_DIR
echo CORE_COUNT=$CORE_COUNT
REVISION_DIR="$CURRENT_DIR/external_revisions"
GLSLANG_GITURL=$(cat "${REVISION_DIR}/glslang_giturl")
GLSLANG_REVISION=$(cat "${REVISION_DIR}/glslang_revision")
echo "GLSLANG_GITURL=${GLSLANG_GITURL}"
echo "GLSLANG_REVISION=${GLSLANG_REVISION}"
BUILDDIR=${CURRENT_DIR}
BASEDIR="$BUILDDIR/external"
function create_glslang () {
rm -rf "${BASEDIR}"/glslang
echo "Creating local glslang repository (${BASEDIR}/glslang)."
mkdir -p "${BASEDIR}"/glslang
cd "${BASEDIR}"/glslang
git clone ${GLSLANG_GITURL} .
git checkout ${GLSLANG_REVISION}
./update_glslang_sources.py
}
function update_glslang () {
echo "Updating ${BASEDIR}/glslang"
cd "${BASEDIR}"/glslang
git fetch --all
git checkout --force ${GLSLANG_REVISION}
./update_glslang_sources.py
}
function build_glslang () {
echo "Building ${BASEDIR}/glslang"
cd "${BASEDIR}"/glslang
mkdir -p build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=install ..
make -j $CORE_COUNT
make install
}
INCLUDE_GLSLANG=false
NO_SYNC=false
NO_BUILD=false
USE_IMPLICIT_COMPONENT_LIST=true
# Parse options
while [[ $# > 0 ]]
do
option="$1"
case $option in
# options to specify build of glslang components
-g|--glslang)
INCLUDE_GLSLANG=true
USE_IMPLICIT_COMPONENT_LIST=false
echo "Building glslang ($option)"
;;
# options to specify build of spirv-tools components
-s|--spirv-tools)
echo "($option) is deprecated and is no longer necessary"
;;
# option to specify skipping sync from git
--no-sync)
NO_SYNC=true
echo "Skipping sync ($option)"
;;
# option to specify skipping build
--no-build)
NO_BUILD=true
echo "Skipping build ($option)"
;;
*)
echo "Unrecognized option: $option"
echo "Usage: update_external_sources.sh [options]"
echo " Available options:"
echo " -g | --glslang # enable glslang component"
echo " --no-sync # skip sync from git"
echo " --no-build # skip build"
echo " If any component enables are provided, only those components are enabled."
echo " If no component enables are provided, all components are enabled."
echo " Sync uses git to pull a specific revision."
echo " Build configures CMake, builds Release."
exit 1
;;
esac
shift
done
if [ ${USE_IMPLICIT_COMPONENT_LIST} == "true" ]; then
echo "Building glslang"
INCLUDE_GLSLANG=true
fi
if [ ${INCLUDE_GLSLANG} == "true" ]; then
if [ ${NO_SYNC} == "false" ]; then
if [ ! -d "${BASEDIR}/glslang" -o ! -d "${BASEDIR}/glslang/.git" -o -d "${BASEDIR}/glslang/.svn" ]; then
create_glslang
fi
update_glslang
fi
if [ ${NO_BUILD} == "false" ]; then
build_glslang
fi
fi