#!/bin/sh

# Copyright 2017  Patrick J. Volkerding, Sebeka, Minnesota, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Call this script with the version of the Vulkan-LoaderAndValidationLayers-sdk
# that you would like to fetch the sources for. This will fetch the SDK from
# github, and then look at the revisions listed in the external_revisions
# directory to fetch the proper glslang, SPIRV-Headers, and SPIRV-Tools.
#
# Example:  VERSION=1.0.26.0 ./fetch-sources.sh

VERSION=${VERSION:-1.0.26.0}

# Remove existing sources:
rm -f Vulkan-LoaderAndValidationLayers-sdk* glslang-* SPIRV-Headers-* SPIRV-Tools-*

# Fetch SDK:
lftpget https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/sdk-${VERSION}/Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz

GLSLANG_REVISION=$(tar xOf Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz Vulkan-LoaderAndValidationLayers-sdk-${VERSION}/glslang_revision)
SPIRV_HEADERS_REVISION=$(tar xOf Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz Vulkan-LoaderAndValidationLayers-sdk-${VERSION}/spirv-headers_revision)
SPIRV_TOOLS_REVISION=$(tar xOf Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz Vulkan-LoaderAndValidationLayers-sdk-${VERSION}/spirv-tools_revision)

lftpget https://github.com/KhronosGroup/glslang/archive/${GLSLANG_REVISION}/glslang-${GLSLANG_REVISION}.tar.gz
lftpget https://github.com/KhronosGroup/SPIRV-Headers/archive/${SPIRV_HEADERS_REVISION}/SPIRV-Headers-${SPIRV_HEADERS_REVISION}.tar.gz
lftpget https://github.com/KhronosGroup/SPIRV-Tools/archive/${SPIRV_TOOLS_REVISION}/SPIRV-Tools-${SPIRV_TOOLS_REVISION}.tar.gz

# List URLs in vulkan-sdk.url:
echo "https://github.com/KhronosGroup/Vulkan-LoaderAndValidationLayers/archive/sdk-${VERSION}/Vulkan-LoaderAndValidationLayers-sdk-${VERSION}.tar.gz" > vulkan-sdk.url
echo "https://github.com/KhronosGroup/glslang/archive/${GLSLANG_REVISION}/glslang-${GLSLANG_REVISION}.tar.gz" >> vulkan-sdk.url
echo "https://github.com/KhronosGroup/SPIRV-Headers/archive/${SPIRV_HEADERS_REVISION}/SPIRV-Headers-${SPIRV_HEADERS_REVISION}.tar.gz" >> vulkan-sdk.url
echo "https://github.com/KhronosGroup/SPIRV-Tools/archive/${SPIRV_TOOLS_REVISION}/SPIRV-Tools-${SPIRV_TOOLS_REVISION}.tar.gz" >> vulkan-sdk.url

# Recompress from .gz to .xz:
gzip -d Vulkan-LoaderAndValidationLayers-sdk* glslang-* SPIRV-Headers-* SPIRV-Tools-*
xz -9 -v Vulkan-LoaderAndValidationLayers-sdk* glslang-* SPIRV-Headers-* SPIRV-Tools-*

