#!/usr/bin/env bash
# Copyright (c) 2022, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# Run dart2wasm on the Dart VM. This script assumes the Dart repo's
# directory structure.

function follow_links() {
  file="$1"
  while [ -h "$file" ]; do
    # On Mac OS, readlink -f doesn't work.
    file="$(readlink "$file")"
  done
  echo "$file"
}

# Unlike $0, $BASH_SOURCE points to the absolute path of this file.
PROG_NAME="$(follow_links "$BASH_SOURCE")"

# Handle the case where dart-sdk/bin has been symlinked to.
PROG_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"
SDK_DIR="$(cd "${PROG_DIR}/../.." ; pwd -P)"

# Locate build directory, containing executables, snapshots and platform dill.
if [[ `uname` == 'Darwin' ]]; then
  OUT_DIR="$SDK_DIR/xcodebuild"
else
  OUT_DIR="$SDK_DIR/out"
fi
DART_CONFIGURATION=${DART_CONFIGURATION:-ReleaseX64}
BIN_DIR="$OUT_DIR/$DART_CONFIGURATION"

DART_PRECOMPILED_RUNTIME="$BIN_DIR/dart_precompiled_runtime"

# Point to SDK directory.
SDK_ARG="--dart-sdk=$SDK_DIR"

# Point to built platform dill.
PLATFORM="$BIN_DIR/dart2wasm_platform.dill"
PLATFORM_ARG="--platform=$PLATFORM"

unset EXTRA_VM_OPTIONS
declare -a EXTRA_VM_OPTIONS

# Choose snapshot with or without asserts enabled.
SNAPSHOT_NAME="dart2wasm"
case $0 in
  *_developer)
    EXTRA_VM_OPTIONS+=('--enable_asserts')
    SNAPSHOT_NAME="dart2wasm_asserts"
    ;;
esac
SNAPSHOT="$BIN_DIR/$SNAPSHOT_NAME.snapshot"

# We allow extra vm options to be passed in through an environment variable.
if [[ $DART_VM_OPTIONS ]]; then
  read -a OPTIONS <<< "$DART_VM_OPTIONS"
  EXTRA_VM_OPTIONS+=("${OPTIONS[@]}")
fi

DART_ROOT="$(cd "${SDK_DIR}/.." ; pwd -P)"

exec "$DART_PRECOMPILED_RUNTIME" "--packages=$DART_ROOT/.packages" "${EXTRA_VM_OPTIONS[@]}" "$SNAPSHOT" "$SDK_ARG" "$PLATFORM_ARG" "$@"
