Add integration test for testing the arch variant passed to cc modules included in APEXES.
Resend aosp/2350557, with minor change on line 65 of apex_cc_module_arch_variant_tests.sh. The pattern was: '.*android_target.*: ([0-9]+)$' and is changed to: '.*opt-ST.*: ([0-9]+)$' since the Bazel output directory name has been changed. Bug: 258422889 Test: build/soong/tests/run_integration_tests.sh Change-Id: Ib114bc0084d8ea2cd232d6478cc81a039b138bc4
This commit is contained in:
94
tests/apex_cc_module_arch_variant_tests.sh
Executable file
94
tests/apex_cc_module_arch_variant_tests.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/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.apex))' | 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.apex))' \
|
||||
| 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.apex))' | 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
|
@@ -14,3 +14,7 @@ TOP="$(readlink -f "$(dirname "$0")"/../../..)"
|
||||
# mock client.
|
||||
"$TOP/build/soong/tests/apex_comparison_tests.sh"
|
||||
"$TOP/build/soong/tests/apex_comparison_tests.sh" "module_arm64only"
|
||||
|
||||
"$TOP/build/soong/tests/apex_cc_module_arch_variant_tests.sh"
|
||||
"$TOP/build/soong/tests/apex_cc_module_arch_variant_tests.sh" "aosp_arm" "armv7-a"
|
||||
"$TOP/build/soong/tests/apex_cc_module_arch_variant_tests.sh" "aosp_cf_arm64_phone" "armv8-a" "cortex-a53"
|
Reference in New Issue
Block a user