Changes to fetchDependencies script: - remove -sdk option - Add --v-lvl-root and --glslang-root options (with an arg) that allow caller to pass in the root dir of these two repos if the caller already has them. The script then symlinks to these instead of fetching and building. Fixes: #79 #84
165 lines
3.5 KiB
Bash
Executable File
165 lines
3.5 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-lvl-root path] [--glslang-root path]
|
|
#
|
|
# --v-lvl-root path
|
|
# "path" specifies a directory path to a
|
|
# KhronosGroup/Vulkan-LoaderAndValidationLayers 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 -------------------
|
|
|
|
# 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
|
|
cmake ..
|
|
make
|
|
cd -
|
|
}
|
|
|
|
|
|
# ----------------- Main -------------------
|
|
|
|
EXT_DIR=External
|
|
EXT_REV_DIR=ExternalRevisions
|
|
V_LVL_NAME=Vulkan-LoaderAndValidationLayers
|
|
GLSLANG_NAME=glslang
|
|
V_LVL_ROOT=""
|
|
GLSLANG_ROOT=""
|
|
|
|
while (( "$#" )); do
|
|
case "$1" in
|
|
--v-lvl-root)
|
|
V_LVL_ROOT=$2
|
|
shift 2
|
|
;;
|
|
--glslang-root)
|
|
GLSLANG_ROOT=$2
|
|
shift 2
|
|
;;
|
|
-*|--*=)
|
|
echo "Error: Unsupported flag $1" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
echo
|
|
echo Retrieving MoltenVK dependencies into ${EXT_DIR}.
|
|
echo
|
|
|
|
mkdir -p ${EXT_DIR}
|
|
cd ${EXT_DIR}
|
|
|
|
# ----------------- Cereal -------------------
|
|
|
|
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}
|
|
|
|
|
|
# ----------------- SPIRV-Cross -------------------
|
|
|
|
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}
|
|
|
|
|
|
# ----------------- VulkanSamples -------------------
|
|
|
|
REPO_NAME=VulkanSamples
|
|
REPO_URL="https://github.com/brenwill/${REPO_NAME}.git"
|
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
|
|
|
|
# ----------------- Vulkan-LoaderAndValidationLayers -------------------
|
|
|
|
# When MoltenVK is built by something that already has a copy of the
|
|
# Vulkan-LoaderAndValidationLayers repo, use it by creating a symlink.
|
|
if [ ! "$V_LVL_ROOT" = "" ]; then
|
|
|
|
REPO_NAME=${V_LVL_NAME}
|
|
rm -rf ${REPO_NAME}
|
|
ln -sfn ${V_LVL_ROOT} ${REPO_NAME}
|
|
|
|
else
|
|
|
|
REPO_NAME=${V_LVL_NAME}
|
|
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, SPIRV-Tools & SPIRV-Headers -------------------
|
|
|
|
# When MoltenVK is built by something that already has a copy of the
|
|
# glslang repo, use it by creating a symlink.
|
|
if [ ! "$GLSLANG_ROOT" = "" ]; then
|
|
|
|
REPO_NAME=${GLSLANG_NAME}
|
|
rm -rf ${REPO_NAME}
|
|
ln -sfn ${GLSLANG_ROOT} ${REPO_NAME}
|
|
|
|
else
|
|
|
|
REPO_NAME=${GLSLANG_NAME}
|
|
REPO_URL=$(cat "${V_LVL_NAME}/external_revisions/glslang_giturl")
|
|
REPO_REV=$(cat "${V_LVL_NAME}/external_revisions/glslang_revision")
|
|
|
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
|
|
|
cd ${REPO_NAME}
|
|
./update_glslang_sources.py
|
|
cd -
|
|
|
|
build_repo ${REPO_NAME}
|
|
|
|
fi
|
|
|
|
cd ..
|
|
|