1*9e94795aSAndroid Build Coastguard Worker#!/bin/bash 2*9e94795aSAndroid Build Coastguard Worker 3*9e94795aSAndroid Build Coastguard Worker# Copyright (C) 2024 The Android Open Source Project 4*9e94795aSAndroid Build Coastguard Worker# 5*9e94795aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*9e94795aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*9e94795aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*9e94795aSAndroid Build Coastguard Worker# 9*9e94795aSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*9e94795aSAndroid Build Coastguard Worker# 11*9e94795aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*9e94795aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*9e94795aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*9e94795aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*9e94795aSAndroid Build Coastguard Worker# limitations under the License. 16*9e94795aSAndroid Build Coastguard Worker 17*9e94795aSAndroid Build Coastguard Worker# Run check-flagged-apis for public APIs and the three @SystemApi flavours. 18*9e94795aSAndroid Build Coastguard Worker# 19*9e94795aSAndroid Build Coastguard Worker# This script expects an argument to tell it which subcommand of 20*9e94795aSAndroid Build Coastguard Worker# check-flagged-apis to execute. Run the script without any arguments to see 21*9e94795aSAndroid Build Coastguard Worker# the valid options. 22*9e94795aSAndroid Build Coastguard Worker# 23*9e94795aSAndroid Build Coastguard Worker# Remember to lunch to select the relevant release config before running this script. 24*9e94795aSAndroid Build Coastguard Worker 25*9e94795aSAndroid Build Coastguard Workersource $(cd $(dirname $BASH_SOURCE) &> /dev/null && pwd)/../../shell_utils.sh 26*9e94795aSAndroid Build Coastguard Workerrequire_top 27*9e94795aSAndroid Build Coastguard Worker 28*9e94795aSAndroid Build Coastguard WorkerPUBLIC_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_public_generated-api-versions.xml 29*9e94795aSAndroid Build Coastguard WorkerSYSTEM_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_system_generated-api-versions.xml 30*9e94795aSAndroid Build Coastguard WorkerSYSTEM_SERVER_XML_VERSONS=out/target/common/obj/PACKAGING/api_versions_system_server_complete_generated-api-versions.xml 31*9e94795aSAndroid Build Coastguard WorkerMODULE_LIB_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_module_lib_complete_generated-api-versions.xml 32*9e94795aSAndroid Build Coastguard Worker 33*9e94795aSAndroid Build Coastguard Workerfunction m() { 34*9e94795aSAndroid Build Coastguard Worker $(gettop)/build/soong/soong_ui.bash --build-mode --all-modules --dir="$(pwd)" "$@" 35*9e94795aSAndroid Build Coastguard Worker} 36*9e94795aSAndroid Build Coastguard Worker 37*9e94795aSAndroid Build Coastguard Workerfunction build() { 38*9e94795aSAndroid Build Coastguard Worker m \ 39*9e94795aSAndroid Build Coastguard Worker check-flagged-apis \ 40*9e94795aSAndroid Build Coastguard Worker all_aconfig_declarations \ 41*9e94795aSAndroid Build Coastguard Worker frameworks-base-api-current.txt \ 42*9e94795aSAndroid Build Coastguard Worker frameworks-base-api-system-current.txt \ 43*9e94795aSAndroid Build Coastguard Worker frameworks-base-api-system-server-current.txt \ 44*9e94795aSAndroid Build Coastguard Worker frameworks-base-api-module-lib-current.txt \ 45*9e94795aSAndroid Build Coastguard Worker $PUBLIC_XML_VERSIONS \ 46*9e94795aSAndroid Build Coastguard Worker $SYSTEM_XML_VERSIONS \ 47*9e94795aSAndroid Build Coastguard Worker $SYSTEM_SERVER_XML_VERSONS \ 48*9e94795aSAndroid Build Coastguard Worker $MODULE_LIB_XML_VERSIONS 49*9e94795aSAndroid Build Coastguard Worker} 50*9e94795aSAndroid Build Coastguard Worker 51*9e94795aSAndroid Build Coastguard Workerfunction noop() { 52*9e94795aSAndroid Build Coastguard Worker true 53*9e94795aSAndroid Build Coastguard Worker} 54*9e94795aSAndroid Build Coastguard Worker 55*9e94795aSAndroid Build Coastguard Workerfunction aninja() { 56*9e94795aSAndroid Build Coastguard Worker local T="$(gettop)" 57*9e94795aSAndroid Build Coastguard Worker (\cd "${T}" && prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-${TARGET_PRODUCT}.ninja "$@") 58*9e94795aSAndroid Build Coastguard Worker} 59*9e94795aSAndroid Build Coastguard Worker 60*9e94795aSAndroid Build Coastguard Workerfunction path_to_api_signature_file { 61*9e94795aSAndroid Build Coastguard Worker aninja -t query device_"$1"_all_targets | grep -A1 -e input: | tail -n1 62*9e94795aSAndroid Build Coastguard Worker} 63*9e94795aSAndroid Build Coastguard Worker 64*9e94795aSAndroid Build Coastguard Workerfunction run_check() { 65*9e94795aSAndroid Build Coastguard Worker local errors=0 66*9e94795aSAndroid Build Coastguard Worker 67*9e94795aSAndroid Build Coastguard Worker echo "# current" 68*9e94795aSAndroid Build Coastguard Worker check-flagged-apis check \ 69*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-current.txt") \ 70*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ 71*9e94795aSAndroid Build Coastguard Worker --api-versions $PUBLIC_XML_VERSIONS 72*9e94795aSAndroid Build Coastguard Worker (( errors += $? )) 73*9e94795aSAndroid Build Coastguard Worker 74*9e94795aSAndroid Build Coastguard Worker echo 75*9e94795aSAndroid Build Coastguard Worker echo "# system-current" 76*9e94795aSAndroid Build Coastguard Worker check-flagged-apis check \ 77*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-system-current.txt") \ 78*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ 79*9e94795aSAndroid Build Coastguard Worker --api-versions $SYSTEM_XML_VERSIONS 80*9e94795aSAndroid Build Coastguard Worker (( errors += $? )) 81*9e94795aSAndroid Build Coastguard Worker 82*9e94795aSAndroid Build Coastguard Worker echo 83*9e94795aSAndroid Build Coastguard Worker echo "# system-server-current" 84*9e94795aSAndroid Build Coastguard Worker check-flagged-apis check \ 85*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-system-server-current.txt") \ 86*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ 87*9e94795aSAndroid Build Coastguard Worker --api-versions $SYSTEM_SERVER_XML_VERSONS 88*9e94795aSAndroid Build Coastguard Worker (( errors += $? )) 89*9e94795aSAndroid Build Coastguard Worker 90*9e94795aSAndroid Build Coastguard Worker echo 91*9e94795aSAndroid Build Coastguard Worker echo "# module-lib" 92*9e94795aSAndroid Build Coastguard Worker check-flagged-apis check \ 93*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-module-lib-current.txt") \ 94*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ 95*9e94795aSAndroid Build Coastguard Worker --api-versions $MODULE_LIB_XML_VERSIONS 96*9e94795aSAndroid Build Coastguard Worker (( errors += $? )) 97*9e94795aSAndroid Build Coastguard Worker 98*9e94795aSAndroid Build Coastguard Worker return $errors 99*9e94795aSAndroid Build Coastguard Worker} 100*9e94795aSAndroid Build Coastguard Worker 101*9e94795aSAndroid Build Coastguard Workerfunction run_list() { 102*9e94795aSAndroid Build Coastguard Worker echo "# current" 103*9e94795aSAndroid Build Coastguard Worker check-flagged-apis list \ 104*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-current.txt") \ 105*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb 106*9e94795aSAndroid Build Coastguard Worker 107*9e94795aSAndroid Build Coastguard Worker echo 108*9e94795aSAndroid Build Coastguard Worker echo "# system-current" 109*9e94795aSAndroid Build Coastguard Worker check-flagged-apis list \ 110*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-system-current.txt") \ 111*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb 112*9e94795aSAndroid Build Coastguard Worker 113*9e94795aSAndroid Build Coastguard Worker echo 114*9e94795aSAndroid Build Coastguard Worker echo "# system-server-current" 115*9e94795aSAndroid Build Coastguard Worker check-flagged-apis list \ 116*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-system-server-current.txt") \ 117*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb 118*9e94795aSAndroid Build Coastguard Worker 119*9e94795aSAndroid Build Coastguard Worker echo 120*9e94795aSAndroid Build Coastguard Worker echo "# module-lib" 121*9e94795aSAndroid Build Coastguard Worker check-flagged-apis list \ 122*9e94795aSAndroid Build Coastguard Worker --api-signature $(path_to_api_signature_file "frameworks-base-api-module-lib-current.txt") \ 123*9e94795aSAndroid Build Coastguard Worker --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb 124*9e94795aSAndroid Build Coastguard Worker} 125*9e94795aSAndroid Build Coastguard Worker 126*9e94795aSAndroid Build Coastguard Workerbuild_cmd=build 127*9e94795aSAndroid Build Coastguard Workerif [[ "$1" == "--skip-build" ]]; then 128*9e94795aSAndroid Build Coastguard Worker build_cmd=noop 129*9e94795aSAndroid Build Coastguard Worker shift 1 130*9e94795aSAndroid Build Coastguard Workerfi 131*9e94795aSAndroid Build Coastguard Worker 132*9e94795aSAndroid Build Coastguard Workercase "$1" in 133*9e94795aSAndroid Build Coastguard Worker check) $build_cmd && run_check ;; 134*9e94795aSAndroid Build Coastguard Worker list) $build_cmd && run_list ;; 135*9e94795aSAndroid Build Coastguard Worker *) echo "usage: $(basename $0): [--skip-build] check|list"; exit 1 136*9e94795aSAndroid Build Coastguard Workeresac 137