From b97e818201e0a2bab8491242d14236cd95d5c1ba Mon Sep 17 00:00:00 2001 From: Anders Lewis Date: Fri, 14 Jul 2017 15:20:13 -0700 Subject: Add support for data field in cc_benchmark. Test: mm -j at source root; Run on blueprint with data in cc_benchmark. Change-Id: I6647fe95c96a6df27a54633f6a520a032487ca97 --- cc/androidmk.go | 38 ++++++++++++++++++++++---------------- cc/test.go | 7 +++++++ 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) -- cgit v1.2.3