blob: 62fd67bfd7f47c5bb99682ff067cf2b8dd7abe2b [file] [log] [blame]
#!/bin/bash
#
# Copyright (C) 2015 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.
if [ ! -d art ]; then
echo "Script needs to be run at the root of the android tree"
exit 1
fi
common_targets="vogar vogar.jar core-tests apache-harmony-jdwp-tests-hostdex out/host/linux-x86/bin/adb jsr166-tests"
android_root="/data/local/tmp/system"
linker="linker"
mode="target"
j_arg="-j$(nproc)"
make_command=
if [[ "$TARGET_PRODUCT" == "armv8" ]]; then
linker="linker64"
fi
if [[ "$ART_TEST_ANDROID_ROOT" != "" ]]; then
android_root="$ART_TEST_ANDROID_ROOT"
fi
while true; do
if [[ "$1" == "--host" ]]; then
mode="host"
shift
elif [[ "$1" == "--target" ]]; then
mode="target"
shift
elif [[ "$1" == "--32" ]]; then
linker="linker"
shift
elif [[ "$1" == "--64" ]]; then
linker="linker64"
shift
elif [[ "$1" == "--android-root" ]]; then
shift
android_root=$1
shift
elif [[ "$1" == -j* ]]; then
j_arg=$1
shift
elif [[ "$1" == "" ]]; then
break
fi
done
if [[ $mode == "host" ]]; then
make_command="make $j_arg build-art-host-tests $common_targets out/host/linux-x86/lib/libjavacoretests.so out/host/linux-x86/lib64/libjavacoretests.so"
echo "Executing $make_command"
$make_command
elif [[ $mode == "target" ]]; then
# We need to provide our own linker in case the linker on the device
# is out of date.
env="TARGET_GLOBAL_LDFLAGS=-Wl,-dynamic-linker=$android_root/bin/$linker"
# Use '-e' to force the override of TARGET_GLOBAL_LDFLAGS.
# Also, we build extra tools that will be used by tests, so that
# they are compiled with our own linker.
make_command="make -e $j_arg build-art-target-tests $common_targets libjavacrypto libjavacoretests linker toybox toolbox sh"
echo "Executing env $env $make_command"
env $env $make_command
fi