#!/bin/bash

# Copyright 2016 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

set -e
root_out_dir=${1}
target_cpu=${2}
host_cpu=${3}
host_os=${4}
fuchsia_root=$root_out_dir/../..
tools_path=$fuchsia_root/prebuilt/third_party
cmake=$tools_path/cmake/$host_os-$host_cpu/bin/cmake
ninja_path=$tools_path/ninja/$host_os-$host_cpu/ninja
build_dir=$root_out_dir/build-vulkancts
caselist_build_dir=$root_out_dir/build-vulkancts/cases-build
caselist_out_dir=$root_out_dir/build-vulkancts/cases
if [[ $target_cpu == "arm64" ]]; then
    # Disable ShadowCallStack, since there seem to be some issues with the call
	# stack after exceptions are caught.
	# TODO(fxb/41627): Re-enable.
	extra_args="-DFUCHSIA_SYSTEM_PROCESSOR=aarch64 -DFUCHSIA_COMPILER_TARGET=aarch64-fuchsia -DDE_CPU=DE_CPU_ARM_64 -DDE_PTR_SIZE=8 -DCMAKE_C_FLAGS=-fno-sanitize=shadow-call-stack -DCMAKE_CXX_FLAGS=-fno-sanitize=shadow-call-stack"
else
	extra_args="-DFUCHSIA_SYSTEM_PROCESSOR=x86_64 -DFUCHSIA_COMPILER_TARGET=x86_64-fuchsia"
fi

fuchsia_lib_path=$root_out_dir/$target_cpu-shared
fuchsia_libfdio=$fuchsia_lib_path/libfdio.so

sysroot=$root_out_dir/sdk/exported/zircon_sysroot/arch/$target_cpu/sysroot

if [ ! -d "$sysroot" ]; then
	echo "Can't find sysroot: $sysroot"
	exit 1
fi

# Export buildtools' cmake to the scripts below.
export PATH="$PATH:$(dirname $cmake)"

pushd $fuchsia_root/third_party/vulkan-cts
python external/fetch_sources.py
popd

# builds the test executable for the host in order to write out test cases
pushd $fuchsia_root/third_party/vulkan-cts
mkdir -p $caselist_out_dir
mkdir -p $caselist_build_dir
python scripts/build_caselists.py -b $caselist_build_dir -m dEQP-VK $caselist_out_dir
popd

mkdir -p $build_dir
$fuchsia_root/third_party/vulkan-cts/fuchsia/gendepsfile.py $build_dir/vulkan-cts.d $fuchsia_root/third_party/vulkan-cts
pushd $build_dir
$cmake $fuchsia_root/third_party/vulkan-cts -GNinja  -DCMAKE_BUILD_TYPE=RelWithAsserts -DCMAKE_MAKE_PROGRAM=$ninja_path -DFUCHSIA_SYSROOT=$sysroot -DCMAKE_TOOLCHAIN_FILE=$fuchsia_root/third_party/vulkan-cts/fuchsia/Fuchsia.cmake -DDE_OS=DE_OS_FUCHSIA -DDEQP_TARGET=fuchsia -DFUCHSIA_ROOT=$fuchsia_root -DFUCHSIA_LIB_DIR=$fuchsia_lib_path -DFUCHSIA_LIBFDIO=$fuchsia_libfdio $extra_args
$ninja_path deqp-vk executor execserver
popd
