#!/bin/bash
#
# Copyright 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

plugin=libartagentd.so
if  [[ "$@" == *"-O"* ]]; then
  plugin=libartagent.so
fi

# Adjust the agent path when running on device.
if  [[ "$@" != *"--host"* ]]; then
  if [[ -z "$ANDROID_BUILD_TOP" ]]; then
    echo 'ANDROID_BUILD_TOP environment variable is empty; did you forget to run `lunch`?'
    exit 1
  fi

  bitness_flag=--32
  if  [[ "$@" == *"--64"* ]]; then
    bitness_flag=--64
  fi

  # Path to native libraries installed on the device for testing purposes.
  test_native_lib_path=$("$ANDROID_BUILD_TOP/art/test/utils/get-device-test-native-lib-path" \
    "$bitness_flag")

  # The linker configuration used for dalvikvm(64) in the ART APEX requires us
  # to pass the full path to the agent to the runtime when running on device.
  plugin=${test_native_lib_path}/${plugin}
fi

./default-run "$@" --runtime-option -agentpath:${plugin}=test_900 \
                   --runtime-option -agentpath:${plugin}=test_900_round_2 \
                   --android-runtime-option -Xplugin:${plugin}
