media-sound: Reland: cras_bench: Add ebuild file

Use google/benchmark to build a test binary to test and track
low level CRAS ops performance. This CL deploys the binary to
test images and the binary will be used by manual testing or
Tast perf tests.

Changes:
- Build cras_bench for test images with `cros_bazel`
- Add cras_bench to the dependency of `target-chromium-os-test`

Difference:
- bazel_setup_bazelrc will be called by bazel_setup_crosstool, so
  we don't need to call it again.

BUG=b:191123602
TEST=cros-workon-${BOARD} start cras_bench
      && emerge-${BOARD} cras_bench
      && cros deploy ${DUT_IP} cras_bench

Change-Id: I36f4fe5d56513d10b9c3cae2ca3b24e480dfaa00
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/overlays/chromiumos-overlay/+/2979092
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Commit-Queue: Chih-Yang Hsia <paulhsia@chromium.org>
Tested-by: Chih-Yang Hsia <paulhsia@chromium.org>
diff --git a/media-sound/cras_bench/Manifest b/media-sound/cras_bench/Manifest
new file mode 100644
index 0000000..eb304e7
--- /dev/null
+++ b/media-sound/cras_bench/Manifest
@@ -0,0 +1,3 @@
+DIST bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip 171775 BLAKE2B ec0ece4555d779bc8380937baac517a8adf3b0176c4bfb1324943a91366ad9688f528a4bd69e4587bcc4ad427c71a53016a3e2d32a050d9d4ec99caac4967a8e SHA512 5c5e82f276c1c962fbd9c7ddf21df9aa4291f3285f3fa07cd2c2790475ccba670b0627fc3d6faedd1508eca4d80bdae64a31383f001f04f3031112be81c3e697
+DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
+DIST google-benchmark-1.5.5.tar.gz 176710 BLAKE2B 394f8b34873ccd45100e3b1f58dd7819d443733d9224ff003a9410ca30d8bacc6c7736b74dd50623144767e840dbc3cd9ff819a60de6e22a00b1edaf802f0992 SHA512 91a2cdf0245625c657b9bb8d76c7d616a99eaed333e42b34ceff4e996b8fa6027b1c7313a815e7b441d2f6e2e1244c139a0911d585bf0d2e767ac3cea23a67d1
diff --git a/media-sound/cras_bench/OWNERS b/media-sound/cras_bench/OWNERS
new file mode 100644
index 0000000..e040e6f
--- /dev/null
+++ b/media-sound/cras_bench/OWNERS
@@ -0,0 +1 @@
+include chromiumos/third_party/adhd:/OWNERS
diff --git a/media-sound/cras_bench/cras_bench-9999.ebuild b/media-sound/cras_bench/cras_bench-9999.ebuild
new file mode 100644
index 0000000..439bcb7
--- /dev/null
+++ b/media-sound/cras_bench/cras_bench-9999.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_USE_VCSID=1
+
+inherit toolchain-funcs cros-workon cros-bazel
+
+DESCRIPTION="Performance benchmarks for ChromeOS audio server"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/"
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+DEPEND="
+	media-libs/alsa-lib
+"
+RDEPEND="${DEPEND}"
+
+bazel_external_uris="
+	https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip
+	https://github.com/google/benchmark/archive/refs/tags/v1.5.5.tar.gz -> google-benchmark-1.5.5.tar.gz
+"
+SRC_URI="${bazel_external_uris}"
+
+src_unpack() {
+	bazel_load_distfiles "${bazel_external_uris}"
+	cros-workon_src_unpack
+}
+
+src_prepare() {
+	cd cras || die
+	bazel_setup_crosstool
+	default
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+}
+
+src_compile() {
+	cd cras || die
+	ebazel build //src/benchmark:cras_bench
+}
+
+src_install() {
+	dobin cras/bazel-bin/src/benchmark/cras_bench
+}
diff --git a/media-sound/cras_bench/files/chromeos-version.sh b/media-sound/cras_bench/files/chromeos-version.sh
new file mode 100644
index 0000000..518f7a4
--- /dev/null
+++ b/media-sound/cras_bench/files/chromeos-version.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+#
+# This echo statement sets the package base version (without its -r value).
+# If it is necessary to add a new blocker or version dependency on this ebuild
+# at the same time as revving the ebuild to a known version value, editing this
+# version can be useful.
+
+echo 0.0.1
diff --git a/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild b/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild
index 45d169e..924520f 100644
--- a/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild
+++ b/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild
@@ -180,7 +180,10 @@
 	app-misc/utouch-evemu
 	app-mobilephone/dfu-util
 	chromeos-base/autotest-client
-	cras? ( chromeos-base/audiotest )
+	cras? (
+		chromeos-base/audiotest
+		media-sound/cras_bench
+	)
 	chromeos-base/avtest_label_detect
 	chromeos-base/chrome-binary-tests
 	chromeos-base/cros-camera-tool