#!/bin/bash
#
# Copyright (C) 2017 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.

function fail() {
  echo Build failed: $1 1>&2
  exit 1
}

if [[ -z "${ANDROID_BUILD_TOP}" ]]; then
  fail "ANDROID_BUILD_TOP is not defined. Try running 'lunch' first."
fi

SCRIPT_PATH=$( cd $(dirname $0) ; pwd -P )
ASM_CLASSPATH="${ANDROID_BUILD_TOP}/prebuilts/misc/common/asm/asm-5.2.jar"
SRC_PATH="${SCRIPT_PATH}/src"
BUILD_PATH="${SCRIPT_PATH}/classes"
JAR_FILE="${SCRIPT_PATH}/constmethodhandle.jar"

if [[ ! -d "${BUILD_PATH}" ]]; then
    mkdir "$BUILD_PATH" || exit 1
fi

(cd "${SRC_PATH}" && javac -cp "${ASM_CLASSPATH}" -d "${BUILD_PATH}" Main.java constmethodhandle/*.java) || fail "javac error"
(cd "${SCRIPT_PATH}" && java -cp "${ASM_CLASSPATH}:${BUILD_PATH}" constmethodhandle.TestGenerator "${BUILD_PATH}") || fail "generator failure"
(cd "${BUILD_PATH}" && jar cf "${JAR_FILE}" Main.class constmethodhandle/ConstTest.class) || fail "jar creation error"
