aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2017-07-18 02:37:03 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-07-18 02:37:03 +0000
commitda4a7257b5b4c4fd41b8e8e084713e3e4f20187b (patch)
treec89ba348f35ef7d171689b919f59d78230e5e704
parentdddf50039a70eaefeec95bde0ed1ca6d528a1eb9 (diff)
parentb97e818201e0a2bab8491242d14236cd95d5c1ba (diff)
downloadbuild_soong-da4a7257b5b4c4fd41b8e8e084713e3e4f20187b.tar.gz
build_soong-da4a7257b5b4c4fd41b8e8e084713e3e4f20187b.tar.bz2
build_soong-da4a7257b5b4c4fd41b8e8e084713e3e4f20187b.zip
Merge "Add support for data field in cc_benchmark."android-o-preview-4
-rw-r--r--cc/androidmk.go38
-rw-r--r--cc/test.go7
2 files changed, 29 insertions, 16 deletions
diff --git a/cc/androidmk.go b/cc/androidmk.go
index 2a3b344f..a92a95c0 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -88,6 +88,25 @@ func (c *Module) AndroidMk() (ret android.AndroidMkData, err error) {
return ret, nil
}
+func androidMkWriteTestData(data android.Paths, ctx AndroidMkContext, ret *android.AndroidMkData) {
+ var testFiles []string
+ for _, d := range data {
+ rel := d.Rel()
+ path := d.String()
+ if !strings.HasSuffix(path, rel) {
+ panic(fmt.Errorf("path %q does not end with %q", path, rel))
+ }
+ path = strings.TrimSuffix(path, rel)
+ testFiles = append(testFiles, path+":"+rel)
+ }
+ if len(testFiles) > 0 {
+ ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
+ fmt.Fprintln(w, "LOCAL_TEST_DATA := "+strings.Join(testFiles, " "))
+ return nil
+ })
+ }
+}
+
func (library *libraryDecorator) androidMkWriteExportedFlags(w io.Writer) {
exportedFlags := library.exportedFlags()
if len(exportedFlags) > 0 {
@@ -212,6 +231,8 @@ func (benchmark *benchmarkDecorator) AndroidMk(ctx AndroidMkContext, ret *androi
}
return nil
})
+
+ androidMkWriteTestData(benchmark.data, ctx, ret)
}
func (test *testBinary) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
@@ -229,22 +250,7 @@ func (test *testBinary) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkDa
return nil
})
- var testFiles []string
- for _, d := range test.data {
- rel := d.Rel()
- path := d.String()
- if !strings.HasSuffix(path, rel) {
- panic(fmt.Errorf("path %q does not end with %q", path, rel))
- }
- path = strings.TrimSuffix(path, rel)
- testFiles = append(testFiles, path+":"+rel)
- }
- if len(testFiles) > 0 {
- ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
- fmt.Fprintln(w, "LOCAL_TEST_DATA := "+strings.Join(testFiles, " "))
- return nil
- })
- }
+ androidMkWriteTestData(test.data, ctx, ret)
}
func (test *testLibrary) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
diff --git a/cc/test.go b/cc/test.go
index ea05ba5a..a52e94ac 100644
--- a/cc/test.go
+++ b/cc/test.go
@@ -298,6 +298,10 @@ func NewTestLibrary(hod android.HostOrDeviceSupported) *Module {
}
type BenchmarkProperties struct {
+ // list of files or filegroup modules that provide data that should be installed alongside
+ // the test
+ Data []string
+
// list of compatibility suites (for example "cts", "vts") that the module should be
// installed into.
Test_suites []string
@@ -306,6 +310,7 @@ type BenchmarkProperties struct {
type benchmarkDecorator struct {
*binaryDecorator
Properties BenchmarkProperties
+ data android.Paths
}
func (benchmark *benchmarkDecorator) linkerInit(ctx BaseModuleContext) {
@@ -324,12 +329,14 @@ func (benchmark *benchmarkDecorator) linkerProps() []interface{} {
}
func (benchmark *benchmarkDecorator) linkerDeps(ctx DepsContext, deps Deps) Deps {
+ android.ExtractSourcesDeps(ctx, benchmark.Properties.Data)
deps = benchmark.binaryDecorator.linkerDeps(ctx, deps)
deps.StaticLibs = append(deps.StaticLibs, "libgoogle-benchmark")
return deps
}
func (benchmark *benchmarkDecorator) install(ctx ModuleContext, file android.Path) {
+ benchmark.data = ctx.ExpandSources(benchmark.Properties.Data, nil)
benchmark.binaryDecorator.baseInstaller.dir = filepath.Join("nativetest", ctx.ModuleName())
benchmark.binaryDecorator.baseInstaller.dir64 = filepath.Join("nativetest64", ctx.ModuleName())
benchmark.binaryDecorator.baseInstaller.install(ctx, file)