12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!/bin/bash
- # Copyright (C) 2022 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.
- set -uo pipefail
- # Integration test for verifying arch variant cflags set on cc modules included
- # in Bazel-built apexes in the real source tree.
- if [ ! -e "build/make/core/Makefile" ]; then
- echo "$0 must be run from the top of the Android source tree."
- exit 1
- fi
- ############
- # Test Setup
- ############
- OUTPUT_DIR="$(mktemp -d tmp.XXXXXX)"
- BAZEL_OUTPUT_DIR="$OUTPUT_DIR/bazel"
- export TARGET_PRODUCT="aosp_arm64"
- [ "$#" -ge 1 ] && export TARGET_PRODUCT="$1"
- ARCH_VARIANT_CFLAG="armv8-a"
- [ "$#" -ge 2 ] && ARCH_VARIANT_CFLAG="$2"
- CPU_VARIANT_CFLAG=""
- [ "$#" -ge 3 ] && CPU_VARIANT_CFLAG="$3"
- function call_bazel() {
- build/bazel/bin/bazel --output_base="$BAZEL_OUTPUT_DIR" $@
- }
- function cleanup {
- # call bazel clean because some bazel outputs don't have w bits.
- call_bazel clean
- rm -rf "${OUTPUT_DIR}"
- }
- trap cleanup EXIT
- ######################
- # Run bp2build / Bazel
- ######################
- build/soong/soong_ui.bash --make-mode BP2BUILD_VERBOSE=1 --skip-soong-tests bp2build
- # Number of CppCompile actions with arch variant flag
- actions_with_arch_variant_num=$(call_bazel aquery --config=bp2build --config=ci --config=android \
- 'mnemonic("CppCompile", deps(//build/bazel/examples/apex/minimal:build.bazel.examples.apex.minimal))' | grep -c \'-march=$ARCH_VARIANT_CFLAG\')
- # Number of all CppCompile actions
- all_cppcompile_actions_num=0
- aquery_summary=$(call_bazel aquery --config=bp2build --config=ci --config=android --output=summary \
- 'mnemonic("CppCompile", deps(//build/bazel/examples/apex/minimal:build.bazel.examples.apex.minimal))' \
- | egrep -o '.*opt-ST.*: ([0-9]+)$' \
- | cut -d: -f2 -)
- while read -r num;
- do
- all_cppcompile_actions_num=$(($all_cppcompile_actions_num + $num))
- done <<< "$aquery_summary"
- if [ $actions_with_arch_variant_num -eq $all_cppcompile_actions_num ]
- then
- echo "Pass: arch variant is set."
- else
- echo "Error: number of CppCompile actions with arch variant set: actual=$actions_with_arch_variant_num, expected=$all_cppcompile_actions_num"
- exit 1
- fi
- if [ $CPU_VARIANT_CFLAG ]
- then
- # Number of CppCompiler actions with cpu variant flag
- actions_with_cpu_variant_num=$(call_bazel aquery --config=bp2build --config=ci --config=android \
- 'mnemonic("CppCompile", deps(//build/bazel/examples/apex/minimal:build.bazel.examples.apex.minimal))' | grep -c "\-mcpu=$CPU_VARIANT_CFLAG")
- if [ $actions_with_cpu_variant_num -eq $all_cppcompile_actions_num ]
- then
- echo "Pass: cpu variant is set."
- else
- echo "Error: number of CppCompile actions with cpu variant set: actual=$actions_with_cpu_variant_num, expected=$all_cppcompile_actions_num"
- exit 1
- fi
- fi
|