#!/usr/bin/env bash

# Copyright 2018 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 -eo pipefail

usage() {
  echo "usage: ${0} [options] {arm64, x64}"
  echo
  echo "  -f [fuchsia-dir] Fuchsia directory (required)"
  echo
  exit 1
}

while getopts "f:" OPT; do
  case $OPT in
  f) FUCHSIA_DIR="${OPTARG}";;
  esac
done
shift $((OPTIND - 1))

case "${1}" in
arm64)
  ARCH="arm64"
  TARGET="aarch64-unknown-linux-musl";;
x64)
  ARCH="x64"
  TARGET="x86_64-unknown-linux-musl";;
*)
  usage;;
esac

declare -r OUT_DIR="out/${ARCH}"
declare -r IMAGE_FILE="out/linux-tests-${ARCH}.img"

if [ ! -d "rust_crates" ]; then
  if [ ! -d "${FUCHSIA_DIR}" ]; then
    echo "Must specifiy Fuchsia directory on first run."
    usage
  fi

  ln -s ${FUCHSIA_DIR}/third_party/rust_crates/ rust_crates
fi

cargo build --target=${TARGET}

mkdir -p ${OUT_DIR}
cp target/${TARGET}/debug/virtio_block_test_util ${OUT_DIR}
cp target/${TARGET}/debug/virtio_net_test_util ${OUT_DIR}
cp target/${TARGET}/debug/virtio_rng_test_util ${OUT_DIR}

declare -r BLOCK_SIZE=4096
declare -r ADDITIONAL_BLOCKS=1024
declare -r SIZE=$(du -sb ${OUT_DIR} | grep -o '^[0-9]*')
declare -r BLOCKS=$(($((${SIZE}/${BLOCK_SIZE}))+${ADDITIONAL_BLOCKS}))
rm -f "${IMAGE_FILE}"
mke2fs -q -d "${OUT_DIR}" -t ext2 -b ${BLOCK_SIZE} "${IMAGE_FILE}" ${BLOCKS}
