#!/usr/bin/env bash
# Copyright (c) 2017, 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.

# Script for running JIT mode VM with Dart 2 pipeline: using Fasta in DFE
# isolate and strong mode semantics.

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.
CUR_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)"

if [[ `uname` == 'Darwin' ]]; then
  OUT_DIR="$CUR_DIR"/../../../xcodebuild/
else
  OUT_DIR="$CUR_DIR"/../../../out/
fi

export DART_CONFIGURATION=${DART_CONFIGURATION:-ReleaseX64}
export DART_USE_SDK=${DART_USE_SDK:0}
BUILD_DIR="$OUT_DIR$DART_CONFIGURATION"

if [[ $DART_USE_SDK -eq 1 ]]; then
  DART_BINARY="$BUILD_DIR"/dart-sdk/bin/dart
  KERNEL_BINARIES_DIR="$BUILD_DIR"/dart-sdk/lib/_internal
else
  DART_BINARY="$BUILD_DIR"/dart
  KERNEL_BINARIES_DIR="$BUILD_DIR"
fi

exec "$DART_BINARY"                                                            \
     --preview_dart_2                                                          \
     --strong                                                                  \
     --reify-generic-functions                                                 \
     --limit-ints-to-64-bits                                                   \
     "$@"
