blob: 2d71d35d7548be7725bf7817b1ba117dd38cdaa0 [file] [log] [blame]
Igor Murashkin1c843e92017-06-19 14:33:06 -07001#!/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 javac with the -bootclasspath 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 javac
29#
30
31DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
32TOP=$DIR/../..
33
34if [[ -z $JAVAC ]]; then
35 JAVAC=javac
36fi
37
38bootjars_args=
39mode=target
40showcommands=n
41while true; do
42 case $1 in
43 --help)
44 echo "Usage: $0 [--mode=host|target] [--core-only] [--show-commands] <javac args>"
45 exit 0
46 ;;
47 --mode=host)
48 bootjars_args="$bootjars_args --host"
49 ;;
50 --mode=target)
51 bootjars_args="$bootjars_args --target"
52 ;;
53 --core-only)
54 bootjars_args="$bootjars_args --core"
55 ;;
56 --show-commands)
57 showcommands=y
58 ;;
59 *)
60 break
61 ;;
62 esac
63 shift
64done
65
66javac_bootclasspath=()
67boot_class_path_list=$($TOP/art/tools/bootjars.sh $bootjars_args --path)
68
69
70for path in $boot_class_path_list; do
71 javac_bootclasspath+=("$path")
72done
73
74if [[ ${#javac_bootclasspath[@]} -eq 0 ]]; then
75 echo "FATAL: Missing bootjars.sh file path list" >&2
76 exit 1
77fi
78
79function join_by { local IFS="$1"; shift; echo "$*"; }
80bcp_arg="$(join_by ":" "${javac_bootclasspath[@]}")"
81javac_args=(-bootclasspath "$bcp_arg")
82
83if [[ $showcommands == y ]]; then
84 echo ${JAVAC} "${javac_args[@]}" "$@"
85fi
86
87${JAVAC} "${javac_args[@]}" "$@"