| #!/bin/bash |
| |
| # Copyright (C) 2024 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. |
| |
| # Run check-flagged-apis for public APIs and the three @SystemApi flavours |
| # Usage: lunch <your-target> && source <this script> |
| |
| source $(cd $(dirname $BASH_SOURCE) &> /dev/null && pwd)/../../shell_utils.sh |
| require_top |
| |
| PUBLIC_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_public_generated-api-versions.xml |
| SYSTEM_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_system_generated-api-versions.xml |
| SYSTEM_SERVER_XML_VERSONS=out/target/common/obj/PACKAGING/api_versions_system_server_complete_generated-api-versions.xml |
| MODULE_LIB_XML_VERSIONS=out/target/common/obj/PACKAGING/api_versions_module_lib_complete_generated-api-versions.xml |
| |
| function m() { |
| $(gettop)/build/soong/soong_ui.bash --build-mode --all-modules --dir="$(pwd)" "$@" |
| } |
| |
| function build() { |
| m \ |
| check-flagged-apis \ |
| all_aconfig_declarations \ |
| frameworks-base-api-current.txt \ |
| frameworks-base-api-system-current.txt \ |
| frameworks-base-api-system-server-current.txt \ |
| frameworks-base-api-module-lib-current.txt \ |
| $PUBLIC_XML_VERSIONS \ |
| $SYSTEM_XML_VERSIONS \ |
| $SYSTEM_SERVER_XML_VERSONS \ |
| $MODULE_LIB_XML_VERSIONS |
| } |
| |
| function aninja() { |
| local T="$(gettop)" |
| (\cd "${T}" && prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-${TARGET_PRODUCT}.ninja "$@") |
| } |
| |
| function path_to_api_signature_file { |
| aninja -t query device_"$1"_all_targets | grep -A1 -e input: | tail -n1 |
| } |
| |
| function run() { |
| local errors=0 |
| |
| echo "# current" |
| check-flagged-apis \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $PUBLIC_XML_VERSIONS |
| (( errors += $? )) |
| |
| echo |
| echo "# system-current" |
| check-flagged-apis \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-system-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $SYSTEM_XML_VERSIONS |
| (( errors += $? )) |
| |
| echo |
| echo "# system-server-current" |
| check-flagged-apis \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-system-server-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $SYSTEM_SERVER_XML_VERSONS |
| (( errors += $? )) |
| |
| echo |
| echo "# module-lib" |
| check-flagged-apis \ |
| --api-signature $(path_to_api_signature_file "frameworks-base-api-module-lib-current.txt") \ |
| --flag-values $(gettop)/out/soong/.intermediates/all_aconfig_declarations.pb \ |
| --api-versions $MODULE_LIB_XML_VERSIONS |
| (( errors += $? )) |
| |
| return $errors |
| } |
| |
| if [[ "$1" != "--skip-build" ]]; then |
| build && run |
| else |
| run |
| fi |