Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8555ed86 authored by Wei Li's avatar Wei Li Committed by Gerrit Code Review
Browse files

Merge "Add integration test for testing the arch variant passed to cc modules included in APEXES."

parents 40559eb6 ad2ac54d
Loading
Loading
Loading
Loading
+94 −0
Original line number Diff line number Diff line
#!/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
 No newline at end of file
+4 −0
Original line number Diff line number Diff line
@@ -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"
 No newline at end of file