Home | History | Annotate | Download | only in tools
      1 #!/bin/bash
      2 #
      3 # Copyright (C) 2017 The Android Open Source Project
      4 #
      5 # Licensed under the Apache License, Version 2.0 (the "License");
      6 # you may not use this file except in compliance with the License.
      7 # You may obtain a copy of the License at
      8 #
      9 #      http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 # Unless required by applicable law or agreed to in writing, software
     12 # distributed under the License is distributed on an "AS IS" BASIS,
     13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 # See the License for the specific language governing permissions and
     15 # limitations under the License.
     16 
     17 #
     18 # Calls desugar.jar with the --bootclasspath_entry values passed in automatically.
     19 # (This avoids having to manually set a boot class path).
     20 #
     21 #
     22 # Script-specific args:
     23 #   --mode=[host|target]: Select between host or target bootclasspath (default target).
     24 #   --core-only:          Use only "core" bootclasspath (e.g. do not include framework).
     25 #   --show-commands:      Print the desugar command being executed.
     26 #   --help:               Print above list of args.
     27 #
     28 # All other args are forwarded to desugar.jar
     29 #
     30 
     31 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
     32 TOP=$DIR/../..
     33 
     34 pushd "$TOP" >/dev/null # back to android root.
     35 
     36 out=${OUT_DIR:-out}
     37 desugar_jar=$out/host/linux-x86/framework/desugar.jar
     38 
     39 if ! [[ -f $desugar_jar ]]; then
     40   echo "Error: Missing $desugar_jar; did you do a build?" >&2
     41   exit 1
     42 fi
     43 
     44 desugar_jar=$(readlink -f "$desugar_jar") # absolute path to desugar jar
     45 popd >/dev/null
     46 
     47 bootjars_args=
     48 mode=target
     49 showcommands=n
     50 while true; do
     51   case $1 in
     52     --help)
     53       echo "Usage: $0 [--mode=host|target] [--core-only] [--show-commands] <desugar args>"
     54       exit 0
     55       ;;
     56     --mode=host)
     57       bootjars_args="$bootjars_args --host"
     58       ;;
     59     --mode=target)
     60       bootjars_args="$bootjars_args --target"
     61       ;;
     62     --mode=*)
     63       echo "Unsupported $0 usage with --mode=$1" >&2
     64       exit 1
     65       ;;
     66     --core-only)
     67       bootjars_args="$bootjars_args --core"
     68       ;;
     69     --show-commands)
     70       showcommands=y
     71       ;;
     72     *)
     73       break
     74       ;;
     75   esac
     76   shift
     77 done
     78 
     79 desugar_args=(--min_sdk_version=10000)
     80 boot_class_path_list=$($TOP/art/tools/bootjars.sh $bootjars_args --path)
     81 
     82 for path in $boot_class_path_list; do
     83   desugar_args+=(--bootclasspath_entry="$path")
     84 done
     85 
     86 if [[ ${#desugar_args[@]} -eq 0 ]]; then
     87   echo "FATAL: Missing bootjars.sh file path list" >&2
     88   exit 1
     89 fi
     90 
     91 if [[ $showcommands == y ]]; then
     92   echo java -jar "$desugar_jar" "${desugar_args[@]}" "$@"
     93 fi
     94 
     95 java -jar "$desugar_jar" "${desugar_args[@]}" "$@"
     96