Reorganize External dependencies.
fetchDependencies script now in top directory to avoid Travis caching of External directory. fetchDependencies is now smart about fetching vs cloning and building only what is necessary.
This commit is contained in:
parent
d974ce46b8
commit
979a7f801f
@ -7,12 +7,12 @@ osx_image: xcode9.2
|
|||||||
# Build dependencies
|
# Build dependencies
|
||||||
install:
|
install:
|
||||||
- brew install python3
|
- brew install python3
|
||||||
- ( cd External && ./fetchDependencies )
|
- ./fetchDependencies
|
||||||
|
|
||||||
# Cache built deps
|
# Cache built deps
|
||||||
#cache:
|
cache:
|
||||||
# directories:
|
directories:
|
||||||
# - External
|
- External
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- xcodebuild -scheme "MoltenVK (Debug)"
|
- xcodebuild -scheme "MoltenVK (Debug)"
|
||||||
|
@ -39,10 +39,9 @@ Fetching External Libraries
|
|||||||
- [*cereal*](https://github.com/USCiLab/cereal)
|
- [*cereal*](https://github.com/USCiLab/cereal)
|
||||||
|
|
||||||
These external open-source libraries are maintained in the `External` directory.
|
These external open-source libraries are maintained in the `External` directory.
|
||||||
To retrieve these libraries from their sources, run the `fetchDependencies`
|
To retrieve these libraries from their sources, run the `fetchDependencies` script
|
||||||
script in that directory:
|
in the main repository directory:
|
||||||
|
|
||||||
cd External
|
|
||||||
./fetchDependencies [-sdk]
|
./fetchDependencies [-sdk]
|
||||||
|
|
||||||
The `-sdk` option tells the script that **MoltenVK** is being installed as part of
|
The `-sdk` option tells the script that **MoltenVK** is being installed as part of
|
||||||
@ -62,13 +61,13 @@ versions of each external library. The version of each external library is
|
|||||||
determined as follows:
|
determined as follows:
|
||||||
|
|
||||||
- **_SPIRV-Cross_**: a GitHub repository commit identifier found in the
|
- **_SPIRV-Cross_**: a GitHub repository commit identifier found in the
|
||||||
`External/SPIRV-Cross_repo_revision` file.
|
`ExternalRevisions/SPIRV-Cross_repo_revision` file.
|
||||||
|
|
||||||
- **_VulkanSamples_**: a GitHub repository commit identifier found in the
|
- **_VulkanSamples_**: a GitHub repository commit identifier found in the
|
||||||
`External/VulkanSamples_repo_revision` file.
|
`ExternalRevisions/VulkanSamples_repo_revision` file.
|
||||||
|
|
||||||
- **_Vulkan-LoaderAndValidationLayers_**: a GitHub repository commit identifier found
|
- **_Vulkan-LoaderAndValidationLayers_**: a GitHub repository commit identifier found
|
||||||
in the `External/Vulkan-LoaderAndValidationLayers_repo_revision` file.
|
in the `ExternalRevisions/Vulkan-LoaderAndValidationLayers_repo_revision` file.
|
||||||
|
|
||||||
- **_glslang_**: a GitHub repository commit identifier found in the retrieved
|
- **_glslang_**: a GitHub repository commit identifier found in the retrieved
|
||||||
*Vulkan-LoaderAndValidationLayers* repository.
|
*Vulkan-LoaderAndValidationLayers* repository.
|
||||||
@ -78,7 +77,7 @@ determined as follows:
|
|||||||
- **_SPIRV-Headers_**: automatically retrieved by the *glslang* repository.
|
- **_SPIRV-Headers_**: automatically retrieved by the *glslang* repository.
|
||||||
|
|
||||||
- **_cereal_**: a GitHub repository commit identifier found in the
|
- **_cereal_**: a GitHub repository commit identifier found in the
|
||||||
`External/cereal_repo_revision` file.
|
`ExternalRevisions/cereal_repo_revision` file.
|
||||||
|
|
||||||
You can update which versions of the *SPIRV-Cross*, *VulkanSamples*,
|
You can update which versions of the *SPIRV-Cross*, *VulkanSamples*,
|
||||||
*Vulkan-LoaderAndValidationLayers*, or *cereal* libraries are retrieved,
|
*Vulkan-LoaderAndValidationLayers*, or *cereal* libraries are retrieved,
|
@ -137,7 +137,7 @@
|
|||||||
A92DB3E61CE0F37D00FBC835 /* Whats_New.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = Whats_New.md; path = Docs/Whats_New.md; sourceTree = "<group>"; };
|
A92DB3E61CE0F37D00FBC835 /* Whats_New.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = Whats_New.md; path = Docs/Whats_New.md; sourceTree = "<group>"; };
|
||||||
A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MoltenVK.xcodeproj; path = MoltenVK/MoltenVK.xcodeproj; sourceTree = "<group>"; };
|
A92DB3EE1CE0F72500FBC835 /* MoltenVK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MoltenVK.xcodeproj; path = MoltenVK/MoltenVK.xcodeproj; sourceTree = "<group>"; };
|
||||||
A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MoltenVKShaderConverter.xcodeproj; path = MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj; sourceTree = "<group>"; };
|
A92DB40E1CE0F89600FBC835 /* MoltenVKShaderConverter.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = MoltenVKShaderConverter.xcodeproj; path = MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj; sourceTree = "<group>"; };
|
||||||
A943100220546CDD00F5CF87 /* fetchDependencies */ = {isa = PBXFileReference; lastKnownFileType = text; path = fetchDependencies; sourceTree = "<group>"; };
|
A943100220546CDD00F5CF87 /* fetchDependencies */ = {isa = PBXFileReference; lastKnownFileType = text; name = fetchDependencies; path = ../fetchDependencies; sourceTree = "<group>"; };
|
||||||
A98149E51FB78829005F00B4 /* MoltenVK_Runtime_UserGuide.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Runtime_UserGuide.md; path = Docs/MoltenVK_Runtime_UserGuide.md; sourceTree = "<group>"; };
|
A98149E51FB78829005F00B4 /* MoltenVK_Runtime_UserGuide.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = MoltenVK_Runtime_UserGuide.md; path = Docs/MoltenVK_Runtime_UserGuide.md; sourceTree = "<group>"; };
|
||||||
A9AD67D12054E2D700ED3C08 /* VulkanSamples_repo_revision */ = {isa = PBXFileReference; lastKnownFileType = text; path = VulkanSamples_repo_revision; sourceTree = "<group>"; };
|
A9AD67D12054E2D700ED3C08 /* VulkanSamples_repo_revision */ = {isa = PBXFileReference; lastKnownFileType = text; path = VulkanSamples_repo_revision; sourceTree = "<group>"; };
|
||||||
A9AD67D22054E2D700ED3C08 /* Vulkan-LoaderAndValidationLayers_repo_revision */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Vulkan-LoaderAndValidationLayers_repo_revision"; sourceTree = "<group>"; };
|
A9AD67D22054E2D700ED3C08 /* Vulkan-LoaderAndValidationLayers_repo_revision */ = {isa = PBXFileReference; lastKnownFileType = text; path = "Vulkan-LoaderAndValidationLayers_repo_revision"; sourceTree = "<group>"; };
|
||||||
@ -187,7 +187,8 @@
|
|||||||
A9AD67D22054E2D700ED3C08 /* Vulkan-LoaderAndValidationLayers_repo_revision */,
|
A9AD67D22054E2D700ED3C08 /* Vulkan-LoaderAndValidationLayers_repo_revision */,
|
||||||
A9AD67D12054E2D700ED3C08 /* VulkanSamples_repo_revision */,
|
A9AD67D12054E2D700ED3C08 /* VulkanSamples_repo_revision */,
|
||||||
);
|
);
|
||||||
path = External;
|
name = External;
|
||||||
|
path = ExternalRevisions;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
A98149741FB6B565005F00B4 /* Products */ = {
|
A98149741FB6B565005F00B4 /* Products */ = {
|
||||||
|
@ -67,7 +67,7 @@ Installing **MoltenVK**
|
|||||||
-----------------------
|
-----------------------
|
||||||
|
|
||||||
To install **MoltenVK**, clone this `MoltenVK` repository, and then run the
|
To install **MoltenVK**, clone this `MoltenVK` repository, and then run the
|
||||||
`External/fetchDependencies` script to retrieve and build several external
|
`fetchDependencies` script to retrieve and build several external
|
||||||
open-source libraries on which **MoltenVK** relies:
|
open-source libraries on which **MoltenVK** relies:
|
||||||
|
|
||||||
1. Ensure you have `cmake` and `python3` installed:
|
1. Ensure you have `cmake` and `python3` installed:
|
||||||
@ -81,11 +81,11 @@ open-source libraries on which **MoltenVK** relies:
|
|||||||
|
|
||||||
3. Retrieve and build the external libraries:
|
3. Retrieve and build the external libraries:
|
||||||
|
|
||||||
cd MoltenVK/External
|
cd MoltenVK
|
||||||
./fetchDependencies
|
./fetchDependencies
|
||||||
|
|
||||||
For more information about the external open-source libraries used by **MoltenVK**,
|
For more information about the external open-source libraries used by **MoltenVK**,
|
||||||
see the [`External/README.md`](External/README.md) document.
|
see the [`ExternalRevisions/README.md`](ExternalRevisions/README.md) document.
|
||||||
|
|
||||||
|
|
||||||
<a name="building"></a>
|
<a name="building"></a>
|
||||||
|
@ -12,19 +12,26 @@
|
|||||||
|
|
||||||
# ----------------- Functions -------------------
|
# ----------------- Functions -------------------
|
||||||
|
|
||||||
# Clone a repository
|
# Update a repository. If it exists, fetch it, if not clone it.
|
||||||
# $1 repo name
|
# $1 repo name
|
||||||
# $2 repo url
|
# $2 repo url
|
||||||
# $3 repo revision (commit SHA)
|
# $3 repo revision (commit SHA)
|
||||||
clone_repo() {
|
update_repo() {
|
||||||
echo "$1 repo: $2"
|
echo "$1 repo: $2"
|
||||||
echo "$1 revision: $3"
|
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
|
rm -rf $1
|
||||||
git clone $2 $1
|
git clone $2 $1
|
||||||
cd $1
|
cd $1
|
||||||
git checkout $3
|
git checkout $3
|
||||||
cd -
|
cd -
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Build a repository
|
# Build a repository
|
||||||
@ -32,8 +39,7 @@ clone_repo() {
|
|||||||
build_repo() {
|
build_repo() {
|
||||||
echo "Building $1"
|
echo "Building $1"
|
||||||
|
|
||||||
rm -rf $1/build
|
mkdir -p $1/build
|
||||||
mkdir $1/build
|
|
||||||
cd $1/build
|
cd $1/build
|
||||||
cmake ..
|
cmake ..
|
||||||
make
|
make
|
||||||
@ -41,39 +47,46 @@ build_repo() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
echo
|
# ----------------- Main -------------------
|
||||||
echo Retrieving MoltenVK dependencies.
|
|
||||||
echo
|
|
||||||
|
|
||||||
|
EXT_DIR=External
|
||||||
|
EXT_REV_DIR=ExternalRevisions
|
||||||
V_LVL_NAME=Vulkan-LoaderAndValidationLayers
|
V_LVL_NAME=Vulkan-LoaderAndValidationLayers
|
||||||
GLSLANG_NAME=glslang
|
GLSLANG_NAME=glslang
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo Retrieving MoltenVK dependencies into ${EXT_DIR}.
|
||||||
|
echo
|
||||||
|
|
||||||
|
mkdir -p ${EXT_DIR}
|
||||||
|
cd ${EXT_DIR}
|
||||||
|
|
||||||
|
|
||||||
# ----------------- Cereal -------------------
|
# ----------------- Cereal -------------------
|
||||||
|
|
||||||
REPO_NAME=cereal
|
REPO_NAME=cereal
|
||||||
REPO_URL="https://github.com/USCiLab/${REPO_NAME}.git"
|
REPO_URL="https://github.com/USCiLab/${REPO_NAME}.git"
|
||||||
REPO_REV=$(cat "./${REPO_NAME}_repo_revision")
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
||||||
|
|
||||||
clone_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
||||||
|
|
||||||
|
|
||||||
# ----------------- SPIRV-Cross -------------------
|
# ----------------- SPIRV-Cross -------------------
|
||||||
|
|
||||||
REPO_NAME=SPIRV-Cross
|
REPO_NAME=SPIRV-Cross
|
||||||
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
||||||
REPO_REV=$(cat "./${REPO_NAME}_repo_revision")
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
||||||
|
|
||||||
clone_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
||||||
|
|
||||||
|
|
||||||
# ----------------- VulkanSamples -------------------
|
# ----------------- VulkanSamples -------------------
|
||||||
|
|
||||||
REPO_NAME=VulkanSamples
|
REPO_NAME=VulkanSamples
|
||||||
REPO_URL="https://github.com/brenwill/${REPO_NAME}.git"
|
REPO_URL="https://github.com/brenwill/${REPO_NAME}.git"
|
||||||
REPO_REV=$(cat "./${REPO_NAME}_repo_revision")
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
||||||
|
|
||||||
clone_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
||||||
|
|
||||||
|
|
||||||
# ----------------- Vulkan-LoaderAndValidationLayers, glslang, SPIRV-Tools & SPIRV-Headers -------------------
|
# ----------------- Vulkan-LoaderAndValidationLayers, glslang, SPIRV-Tools & SPIRV-Headers -------------------
|
||||||
@ -96,9 +109,9 @@ else
|
|||||||
|
|
||||||
REPO_NAME=${V_LVL_NAME}
|
REPO_NAME=${V_LVL_NAME}
|
||||||
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
REPO_URL="https://github.com/KhronosGroup/${REPO_NAME}.git"
|
||||||
REPO_REV=$(cat "./${REPO_NAME}_repo_revision")
|
REPO_REV=$(cat "../${EXT_REV_DIR}/${REPO_NAME}_repo_revision")
|
||||||
|
|
||||||
clone_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
||||||
|
|
||||||
|
|
||||||
# ----------------- glslang, SPIRV-Tools & SPIRV-Headers ---------------
|
# ----------------- glslang, SPIRV-Tools & SPIRV-Headers ---------------
|
||||||
@ -107,13 +120,15 @@ else
|
|||||||
REPO_URL=$(cat "${V_LVL_NAME}/external_revisions/glslang_giturl")
|
REPO_URL=$(cat "${V_LVL_NAME}/external_revisions/glslang_giturl")
|
||||||
REPO_REV=$(cat "${V_LVL_NAME}/external_revisions/glslang_revision")
|
REPO_REV=$(cat "${V_LVL_NAME}/external_revisions/glslang_revision")
|
||||||
|
|
||||||
clone_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
update_repo ${REPO_NAME} ${REPO_URL} ${REPO_REV}
|
||||||
|
|
||||||
cd ${REPO_NAME}
|
cd ${REPO_NAME}
|
||||||
./update_glslang_sources.py
|
./update_glslang_sources.py
|
||||||
cd -
|
cd -
|
||||||
|
|
||||||
build_repo ${GLSLANG_NAME}
|
build_repo ${REPO_NAME}
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user