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