#!/bin/bash # # Copyright (C) 2017 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. # # Calls javac with the -bootclasspath values passed in automatically. # (This avoids having to manually set a boot class path). # If $JAVAC is set, it will call that instead of 'javac'. # # # Script-specific args: # --mode=[host|target|jvm]: # Select between host,target,jvm bootclasspath (default target). # --core-only: Use only "core" bootclasspath (e.g. do not include framework). # Ignored with --mode=jvm. # --show-commands: Print the javac command being executed. # --help: Print above list of args. # # All other args are forwarded to javac # DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" TOP=$DIR/../.. if [[ -z $JAVAC ]]; then JAVAC=javac fi bootjars_args= mode=target showcommands=n while true; do case $1 in --help) echo "Usage: $0 [--mode=host|target|jvm] [--core-only] [--show-commands] " exit 0 ;; --mode=host) bootjars_args="$bootjars_args --host" mode=host ;; --mode=target) bootjars_args="$bootjars_args --target" mode=target ;; --mode=jvm) mode=jvm ;; --mode=*) echo "Unsupported $0 usage with --mode=$1" >&2 exit 1 ;; --core-only) bootjars_args="$bootjars_args --core" ;; --show-commands) showcommands=y ;; *) break ;; esac shift done if [[ $mode == jvm ]]; then # For --mode=jvm: # Do not prepend a -bootclasspath, which will use the default bootclasspath instead. javac_args=() else # For --mode=host or --mode=target, look up the correct -bootclasspath for libcore. javac_bootclasspath=() boot_class_path_list=$($TOP/art/tools/bootjars.sh $bootjars_args --path) for path in $boot_class_path_list; do javac_bootclasspath+=("$path") done if [[ ${#javac_bootclasspath[@]} -eq 0 ]]; then echo "FATAL: Missing bootjars.sh file path list" >&2 exit 1 fi function join_by { local IFS="$1"; shift; echo "$*"; } bcp_arg="$(join_by ":" "${javac_bootclasspath[@]}")" javac_args=(-bootclasspath "$bcp_arg") fi javac_args+=(-encoding utf8) if [[ $showcommands == y ]]; then echo ${JAVAC} "${javac_args[@]}" "$@" fi ${JAVAC} "${javac_args[@]}" "$@"