xref: /aosp_15_r20/art/tools/veridex/appcompat.sh (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker#!/bin/bash
2*795d594fSAndroid Build Coastguard Worker#
3*795d594fSAndroid Build Coastguard Worker# Copyright (C) 2018 The Android Open Source Project
4*795d594fSAndroid Build Coastguard Worker#
5*795d594fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
6*795d594fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*795d594fSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*795d594fSAndroid Build Coastguard Worker#
9*795d594fSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
10*795d594fSAndroid Build Coastguard Worker#
11*795d594fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*795d594fSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
13*795d594fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*795d594fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*795d594fSAndroid Build Coastguard Worker# limitations under the License.
16*795d594fSAndroid Build Coastguard Worker
17*795d594fSAndroid Build Coastguard Workerecho "NOTE: appcompat.sh is still under development. It can report"
18*795d594fSAndroid Build Coastguard Workerecho "API uses that do not execute at runtime, and reflection uses"
19*795d594fSAndroid Build Coastguard Workerecho "that do not exist. It can also miss on reflection uses."
20*795d594fSAndroid Build Coastguard Worker
21*795d594fSAndroid Build Coastguard Worker# First check if the script is invoked from a prebuilts location.
22*795d594fSAndroid Build Coastguard WorkerSCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
23*795d594fSAndroid Build Coastguard Worker
24*795d594fSAndroid Build Coastguard Workerif [[ -e ${SCRIPT_DIR}/veridex && \
25*795d594fSAndroid Build Coastguard Worker      -e ${SCRIPT_DIR}/hiddenapi-flags.csv && \
26*795d594fSAndroid Build Coastguard Worker      -e ${SCRIPT_DIR}/org.apache.http.legacy-stubs.zip && \
27*795d594fSAndroid Build Coastguard Worker      -e ${SCRIPT_DIR}/system-stubs.zip ]]; then
28*795d594fSAndroid Build Coastguard Worker  exec ${SCRIPT_DIR}/veridex \
29*795d594fSAndroid Build Coastguard Worker    --core-stubs=${SCRIPT_DIR}/system-stubs.zip:${SCRIPT_DIR}/org.apache.http.legacy-stubs.zip \
30*795d594fSAndroid Build Coastguard Worker    --api-flags=${SCRIPT_DIR}/hiddenapi-flags.csv \
31*795d594fSAndroid Build Coastguard Worker    --exclude-api-lists=sdk,invalid \
32*795d594fSAndroid Build Coastguard Worker    $@
33*795d594fSAndroid Build Coastguard Workerfi
34*795d594fSAndroid Build Coastguard Worker
35*795d594fSAndroid Build Coastguard Worker# Otherwise, we want to be at the root for simplifying the "out" detection
36*795d594fSAndroid Build Coastguard Worker# logic.
37*795d594fSAndroid Build Coastguard Workerif [ ! -d art ]; then
38*795d594fSAndroid Build Coastguard Worker  echo "Script needs to be run at the root of the android tree."
39*795d594fSAndroid Build Coastguard Worker  exit 1
40*795d594fSAndroid Build Coastguard Workerfi
41*795d594fSAndroid Build Coastguard Worker
42*795d594fSAndroid Build Coastguard Worker# Logic for setting out_dir from build/make/core/envsetup.mk:
43*795d594fSAndroid Build Coastguard Workerif [[ -z "${OUT_DIR}" ]]; then
44*795d594fSAndroid Build Coastguard Worker  if [[ -z "${OUT_DIR_COMMON_BASE}" ]]; then
45*795d594fSAndroid Build Coastguard Worker    OUT=out
46*795d594fSAndroid Build Coastguard Worker  else
47*795d594fSAndroid Build Coastguard Worker    OUT=${OUT_DIR_COMMON_BASE}/${PWD##*/}
48*795d594fSAndroid Build Coastguard Worker  fi
49*795d594fSAndroid Build Coastguard Workerelse
50*795d594fSAndroid Build Coastguard Worker  OUT=${OUT_DIR}
51*795d594fSAndroid Build Coastguard Workerfi
52*795d594fSAndroid Build Coastguard Worker
53*795d594fSAndroid Build Coastguard Workerif [[ -z "${PACKAGING}" ]]; then
54*795d594fSAndroid Build Coastguard Worker  PACKAGING=${OUT}/target/common/obj/PACKAGING
55*795d594fSAndroid Build Coastguard Workerfi
56*795d594fSAndroid Build Coastguard Worker
57*795d594fSAndroid Build Coastguard Workerif [[ -z "${ANDROID_HOST_OUT}" ]]; then
58*795d594fSAndroid Build Coastguard Worker  ANDROID_HOST_OUT=${OUT}/host/linux-x86
59*795d594fSAndroid Build Coastguard Workerfi
60*795d594fSAndroid Build Coastguard Worker
61*795d594fSAndroid Build Coastguard Workerextra_flags=
62*795d594fSAndroid Build Coastguard Worker
63*795d594fSAndroid Build Coastguard Worker# If --api-flags is not passed directly, take it from the build.
64*795d594fSAndroid Build Coastguard Workerif [[ "$@" != "*--api-flags=*" ]]; then
65*795d594fSAndroid Build Coastguard Worker  file="${OUT}/soong/hiddenapi/hiddenapi-flags.csv"
66*795d594fSAndroid Build Coastguard Worker  if [ ! -f $file ]; then
67*795d594fSAndroid Build Coastguard Worker    echo "Missing API flags file $file"
68*795d594fSAndroid Build Coastguard Worker    exit 1
69*795d594fSAndroid Build Coastguard Worker  fi
70*795d594fSAndroid Build Coastguard Worker  extra_flags="--api-flags=$file"
71*795d594fSAndroid Build Coastguard Workerfi
72*795d594fSAndroid Build Coastguard Worker
73*795d594fSAndroid Build Coastguard Worker# If --exclude-api-lists is not passed directly, exclude SDK APIs.
74*795d594fSAndroid Build Coastguard Workerif [[ "$@" != "*--exclude-api-lists=*" ]]; then
75*795d594fSAndroid Build Coastguard Worker  extra_flags="${extra_flags} --exclude-api-lists=sdk,invalid"
76*795d594fSAndroid Build Coastguard Workerfi
77*795d594fSAndroid Build Coastguard Worker
78*795d594fSAndroid Build Coastguard Worker${ANDROID_HOST_OUT}/bin/veridex \
79*795d594fSAndroid Build Coastguard Worker    --core-stubs=${PACKAGING}/core_dex_intermediates/classes.dex:${PACKAGING}/oahl_dex_intermediates/classes.dex \
80*795d594fSAndroid Build Coastguard Worker    $extra_flags \
81*795d594fSAndroid Build Coastguard Worker    $@
82