| #! /bin/bash |
| # |
| # Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| |
| set -e |
| |
| if [ -z "$R8_HOME" ]; then |
| R8_HOME="$(realpath $(dirname ${BASH_SOURCE[0]})/..)" |
| fi |
| |
| TOOLSDIR=$R8_HOME/tools/linux |
| |
| function usage { |
| echo "Usage: $(basename $0) <dex files>" |
| exit 1 |
| } |
| |
| # Process options. |
| while [ $# -gt 0 ]; do |
| case $1 in |
| -h) |
| usage |
| ;; |
| *) |
| break |
| ;; |
| esac |
| done |
| |
| if [ $# -eq 0 ]; then |
| usage |
| fi |
| |
| TMPDIR=$(mktemp -d "${TMP:-/tmp/}$(basename $0).XXXXXXXXXXXX") |
| OATFILE=$TMPDIR/all.oat |
| |
| if [ $# -gt 1 ]; then |
| JARFILE="$TMPDIR/all.jar" |
| for f in "$@"; do |
| IR=$(dirname "$f") |
| BASE=$(basename "$f") |
| EXT=$(echo "$BASE" | cut -d '.' -f 2) |
| if [ "$EXT" = "dex" ]; then |
| (cd "$DIR" && zip "$JARFILE" "$BASE") |
| else |
| echo "Warning: ignoring non-dex file argument when dex2oat'ing multiple files." |
| fi |
| done |
| else |
| JARFILE="$1" |
| fi |
| |
| LD_LIBRARY_PATH=$TOOLSDIR/art/lib $TOOLSDIR/art/bin/dex2oat \ |
| --android-root=$TOOLSDIR/art/product/angler \ |
| --runtime-arg -Xnorelocate \ |
| --boot-image=$TOOLSDIR/art/product/angler/system/framework/boot.art \ |
| --dex-file=$JARFILE \ |
| --oat-file=$OATFILE \ |
| --instruction-set=arm64 |
| |
| rm -rf $TMPDIR |