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

# Stop if something fails.
set -e

mkdir classes
${JAVAC} -d classes `find src -name '*.java'`

if [ -r src2 ]; then
    ${JAVAC} -d classes `find src2 -name '*.java'`
fi

dx -JXmx256m --debug --dex --dump-to=classes.lst --output=classes.dex \
    --dump-width=1000 classes
zip ${ANDROID_PRODUCT_OUT}/system/framework/test.jar classes.dex

dex2oatd -Xms16m -Xmx16m \
    --boot-dex-file=${ANDROID_PRODUCT_OUT}/system/framework/core.jar \
    --boot=${ANDROID_PRODUCT_OUT}/system/framework/core.oat \
    --dex-file=${ANDROID_PRODUCT_OUT}/system/framework/test.jar \
    --image=${ANDROID_PRODUCT_OUT}/system/framework/test.oat \
    --strip-prefix=${ANDROID_PRODUCT_OUT}

if [ -r src-ex ]; then
    mkdir classes-ex
    ${JAVAC} -d classes-ex -cp classes `find src-ex -name '*.java'`
    dx -JXmx256m --debug --dex --dump-to=classes-ex.lst \
        --output=classes-ex.dex --dump-width=1000 classes-ex

    # quick shuffle so that the stored name is "classes.dex"
    mv classes.dex classes-1.dex
    mv classes-ex.dex classes.dex
    zip ${ANDROID_PRODUCT_OUT}/system/framework/test-ex.jar classes.dex
    mv classes.dex classes-ex.dex
    mv classes-1.dex classes.dex

    dex2oatd -Xms16m -Xmx16m \
        --boot-dex-file=${ANDROID_PRODUCT_OUT}/system/framework/core.jar \
        --boot=${ANDROID_PRODUCT_OUT}/system/framework/core.oat \
        --dex-file=${ANDROID_PRODUCT_OUT}/system/framework/test-ex.jar \
        --image=${ANDROID_PRODUCT_OUT}/system/framework/test-ex.oat \
        --strip-prefix=${ANDROID_PRODUCT_OUT}
fi
