Support test_suites in cc_benchmark modules

Bug: 35394669
Test: m -j checkbuild
Change-Id: I0b521d866edb1706669b8058dc128d389b5582da
diff --git a/cc/androidmk.go b/cc/androidmk.go
index 481dbb4..f853b13 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -200,6 +200,13 @@
 
 func (benchmark *benchmarkDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
 	ctx.subAndroidMk(ret, benchmark.binaryDecorator)
+	ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
+		if len(benchmark.Properties.Test_suites) > 0 {
+			fmt.Fprintln(w, "LOCAL_COMPATIBILITY_SUITE :=",
+				strings.Join(benchmark.Properties.Test_suites, " "))
+		}
+		return nil
+	})
 }
 
 func (test *testBinary) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
diff --git a/cc/test.go b/cc/test.go
index 145b5b0..448f089 100644
--- a/cc/test.go
+++ b/cc/test.go
@@ -299,8 +299,15 @@
 	return module
 }
 
+type BenchmarkProperties struct {
+	// list of compatibility suites (for example "cts", "vts") that the module should be
+	// installed into.
+	Test_suites []string
+}
+
 type benchmarkDecorator struct {
 	*binaryDecorator
+	Properties BenchmarkProperties
 }
 
 func (benchmark *benchmarkDecorator) linkerInit(ctx BaseModuleContext) {
@@ -312,6 +319,12 @@
 	benchmark.binaryDecorator.linkerInit(ctx)
 }
 
+func (benchmark *benchmarkDecorator) linkerProps() []interface{} {
+	props := benchmark.binaryDecorator.linkerProps()
+	props = append(props, &benchmark.Properties)
+	return props
+}
+
 func (benchmark *benchmarkDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps {
 	deps = benchmark.binaryDecorator.linkerDeps(ctx, deps)
 	deps.StaticLibs = append(deps.StaticLibs, "libgoogle-benchmark")