#!/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 Runtime 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}
