#!/bin/bash

PLATFORM=$1
OUT=$2

set -ex

# Freshly clone repositories
rm -rf glslang SPIRV-Cross
git clone https://github.com/KhronosGroup/glslang
git clone https://github.com/KhronosGroup/SPIRV-Cross

GENERATOR="Unix Makefiles"

if [ "$PLATFORM" == "win64" ]; then
	GENERATOR="Visual Studio 15 2017 Win64";
elif [ "$PLATFORM" == "win32" ]; then
	GENERATOR="Visual Studio 15 2017";
else
	export CC=clang CXX=clang++ CFLAGS="-fPIC -fvisibility=hidden -stdlib=libc++" LDFLAGS="-nostdlib++ -Wl,--start-group /usr/lib/libc++.a /usr/lib/libc++fs.a /usr/lib/libc++abi.a -lpthread"
	export CXXFLAGS="${CFLAGS}"

	export PATH=$(pwd)/$(ls -d cmake* | grep -v tar.gz | sort -n | tail -n 1)/bin:$PATH
fi

##### SPIRV-Cross

pushd SPIRV-Cross

	mkdir build
	pushd build

		cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${OUT}"

		if [ "${PLATFORM:0:3}" == "win" ]; then
			cmake --build . --config Release --target install
		else
			make -j$(nproc) install
			strip --strip-unneeded $(ls ${OUT}/bin/* | grep -v .sh)
		fi

	popd #build

popd # SPIRV-Cross


##### glslang (and bonus SPIRV-Tools for free)
pushd glslang

	# Update external sources
	python3 update_glslang_sources.py

	# Now build
	mkdir build
	pushd build
	
		cmake .. -DSPIRV_ALLOW_TIMERS=OFF -DSPIRV_SKIP_TESTS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="${OUT}"

		if [ "${PLATFORM:0:3}" == "win" ]; then
			cmake --build . --config Release --target install
		else
			make -j$(nproc) install
			strip --strip-unneeded $(ls ${OUT}/bin/* | grep -v .sh)
		fi

	popd #build

popd # glslang


