Update to latest dependency libraries for Vulkan SDK 1.1.92. Generate Hologram demo dispatch files in fetchDependencies and remove them from git. Update MoltenVK version to 1.0.27. Update What's New document.
228 lines
5.3 KiB
Bash
Executable File
228 lines
5.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# Copyright (c) 2016-2018 The Brenwill Workshop Ltd.
|
|
#
|
|
# fetchDependencies - Retrieves the correct versions of all dependencies
|
|
#
|
|
# macOS usage: ./fetchDependencies [--v-headers-root path] [--spirv-cross-root path] [--glslang-root path]
|
|
#
|
|
# --v-headers-root path
|
|
# "path" specifies a directory path to a
|
|
# KhronosGroup/Vulkan-Headers repository.
|
|
# This repository does not have to be built.
|
|
#
|
|
# --spirv-cross-root path
|
|
# "path" specifies a directory path to a
|
|
# KhronosGroup/SPIRV-Cross repository.
|
|
# This repository does not have to be built.
|
|
#
|
|
# --glslang-root path
|
|
# "path" specifies a directory path to a KhronosGroup/glslang
|
|
# repository. This repository does need to be built and the
|
|
# build directory must be in the specified directory.
|
|
# It should be built the same way this script builds it.
|
|
#
|
|
#
|
|
|
|
|
|
# ----------------- Functions -------------------
|
|
|
|
V_HEADERS_ROOT=""
|
|
SPIRV_CROSS_ROOT=""
|
|
GLSLANG_ROOT=""
|
|
|
|
while (( "$#" )); do
|
|
case "$1" in
|
|
--v-headers-root)
|
|
V_HEADERS_ROOT=$2
|
|
shift 2
|
|
;;
|
|
--spirv-cross-root)
|
|
SPIRV_CROSS_ROOT=$2
|
|
shift 2
|
|
;;
|
|
--glslang-root)
|
|
GLSLANG_ROOT=$2
|
|
shift 2
|
|
;;
|
|
-*|--*=)
|
|
echo "Error: Unsupported flag $1" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Update a repository. If it exists, fetch it; if not, clone it.
|
|
# $1 repo name
|
|
# $2 repo url
|
|
# $3 repo revision (commit SHA)
|
|
update_repo() {
|
|
echo "$1 repo: $2"
|
|
echo "$1 revision: $3"
|
|
|
|
if [ -d $1 -a -d $1/.git ]; then
|
|
cd $1
|
|
git fetch --all
|
|
git checkout --force $3
|
|
cd -
|
|
else
|
|
rm -rf $1
|
|
git clone $2 $1
|
|
cd $1
|
|
git checkout $3
|
|
cd -
|
|
fi
|
|
}
|
|
|
|
# Build a repository
|
|
# $1 repo name
|
|
build_repo() {
|
|
echo "Building $1"
|
|
|
|
mkdir -p $1/build
|
|
cd $1/build
|
|
if type ninja >/dev/null 2>&1 ; then
|
|
cmake -G Ninja -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=install ..
|
|
ninja
|
|
else
|
|
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=install ..
|
|
make
|
|
fi
|
|
|
|
make install
|
|
|
|
cd -
|
|
}
|
|
|
|
|
|
# ----------------- Main -------------------
|
|
|
|
EXT_DIR=External
|
|
EXT_REV_DIR=ExternalRevisions
|
|
|
|
echo
|
|
echo ========== Retrieving MoltenVK dependencies into ${EXT_DIR} ==========
|
|
|
|
mkdir -p ${EXT_DIR}
|
|
cd ${EXT_DIR}
|
|
|
|
|
|
# ----------------- Cereal -------------------
|
|
|
|
echo
|
|
echo ========== Cereal ==========
|
|
echo
|
|
|
|
REPO_NAME=cereal
|
|
REPO_URL="https://github.com/USCiLab/${REPO_NAME}.git"
|
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
|
|
|
|
# ----------------- Vulkan-Headers -------------------
|
|
|
|
echo
|
|
echo ========== Vulkan-Headers ==========
|
|
echo
|
|
|
|
# When MoltenVK is built by something that already has
|
|
# a copy of this repo, use it by creating a symlink.
|
|
if [ ! "$V_HEADERS_ROOT" = "" ]; then
|
|
REPO_NAME=Vulkan-Headers
|
|
rm -rf ${REPO_NAME}
|
|
ln -sfn ${V_HEADERS_ROOT} ${REPO_NAME}
|
|
else
|
|
REPO_NAME=Vulkan-Headers
|
|
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
fi
|
|
|
|
|
|
# ----------------- SPIRV-Cross -------------------
|
|
|
|
echo
|
|
echo ========== SPIRV-Cross ==========
|
|
echo
|
|
|
|
# When MoltenVK is built by something that already has
|
|
# a copy of this repo, use it by creating a symlink.
|
|
if [ ! "$SPIRV_CROSS_ROOT" = "" ]; then
|
|
REPO_NAME=SPIRV-Cross
|
|
rm -rf ${REPO_NAME}
|
|
ln -sfn ${SPIRV_CROSS_ROOT} ${REPO_NAME}
|
|
else
|
|
REPO_NAME=SPIRV-Cross
|
|
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
fi
|
|
|
|
|
|
# ----------------- glslang -------------------
|
|
|
|
echo
|
|
echo ========== glslang and SPIRV-Tools ==========
|
|
echo
|
|
|
|
# When MoltenVK is built by something that already has
|
|
# a copy of this repo, use it by creating a symlink.
|
|
if [ ! "$GLSLANG_ROOT" = "" ]; then
|
|
REPO_NAME=glslang
|
|
rm -rf ${REPO_NAME}
|
|
ln -sfn ${GLSLANG_ROOT} ${REPO_NAME}
|
|
else
|
|
REPO_NAME=glslang
|
|
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
|
|
cd ${REPO_NAME}
|
|
./update_glslang_sources.py
|
|
cd -
|
|
|
|
build_repo ${REPO_NAME}
|
|
fi
|
|
|
|
|
|
# ----------------- Vulkan-Tools -------------------
|
|
|
|
echo
|
|
echo ========== Vulkan-Tools ==========
|
|
echo
|
|
|
|
REPO_NAME=Vulkan-Tools
|
|
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
|
|
|
|
# ----------------- VulkanSamples -------------------
|
|
|
|
echo
|
|
echo ========== VulkanSamples ==========
|
|
echo
|
|
|
|
REPO_NAME=VulkanSamples
|
|
REPO_URL="https://github.com/LunarG/${REPO_NAME}.git"
|
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
|
|
# Generate dispatch files needed for Hologram demo
|
|
cd "${REPO_NAME}/Sample-Programs/Hologram"
|
|
./generate-dispatch-table HelpersDispatchTable.h
|
|
./generate-dispatch-table HelpersDispatchTable.cpp
|
|
cd -
|
|
|
|
|
|
# ----------------- Cleanup -------------------
|
|
|
|
cd ..
|
|
|