#!/bin/bash
# vim: ft=bash

target_arch=$1

if [ ! -n "$target_arch" ]; then
	echo "Usage: $0 <target arch>"
	exit -1
fi

build_type=Debug
source_dir=$(realpath $(dirname "$0"))
toolchain_build_dir=$source_dir/build/toolchain
target_build_dir=$source_dir/build
sysroot_dir=$target_build_dir/sysroot

if [ ! -d "$source_dir/arch/$target_arch" ]; then
	echo "FATAL: Specified target architecture $target_arch is not supported. See arch/ directory for a list of supported architectures."
	exit -1
fi

rm -rf $toolchain_build_dir $target_build_dir
mkdir -p $toolchain_build_dir $target_build_dir

pushd $toolchain_build_dir > /dev/null

cmake \
	-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
	-DCMAKE_BUILD_TYPE=$build_type \
	$source_dir/toolchain

case $CMAKE_GENERATOR in
	Ninja)
		ninja
		;;
	"Unix Makefiles")
		make
		;;

	*)
		make
		;;
esac

popd

pushd $target_build_dir > /dev/null

cmake \
	-DBUILD_TOOLS_DIR=$toolchain_build_dir/bin \
	-DCMAKE_INSTALL_PREFIX=$sysroot_dir \
	-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
	-DTARGET_ARCH=$target_arch \
	-DCMAKE_BUILD_TYPE=$build_type \
	$source_dir \
	-DCMAKE_MODULE_PATH=$source_dir/arch/$target_arch \
	-DCMAKE_SYSTEM_NAME=Rosetta \
	-DCMAKE_TOOLCHAIN_FILE=$source_dir/arch/$target_arch/Platform/Rosetta.cmake

python3 \
	$source_dir/util/merge-compiledb.py \
	compile_commands.json \
	toolchain/compile_commands.json

popd > /dev/null
