From bbc9f4d586adeea91d7ea971ceed29f748c12595 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 3 May 2017 16:24:55 -0700 Subject: [PATCH] Export proto deps from reused libraries too The deps have to be exported alongside the headers to make sure the headers are in place when a module that depends on the shared library builds. Bug: 37555583 Test: use protos in a cc_library Change-Id: I8f5b8d7937868458c1cf02b990a348aa395634da --- cc/cc.go | 3 ++- cc/library.go | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/cc/cc.go b/cc/cc.go index f368a1335..dd7350452 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -950,9 +950,10 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps { if tag == reuseObjTag { if l, ok := cc.compiler.(libraryInterface); ok { - objs, flags := l.reuseObjs() + objs, flags, deps := l.reuseObjs() depPaths.Objs = depPaths.Objs.Append(objs) depPaths.ReexportedFlags = append(depPaths.ReexportedFlags, flags...) + depPaths.ReexportedFlagsDeps = append(depPaths.ReexportedFlagsDeps, deps...) return } } diff --git a/cc/library.go b/cc/library.go index 1a5de619d..12a866bb7 100644 --- a/cc/library.go +++ b/cc/library.go @@ -202,6 +202,7 @@ type libraryDecorator struct { // For reusing static library objects for shared library reuseObjects Objects reuseExportedFlags []string + reuseExportedDeps android.Paths // table-of-contents file to optimize out relinking when possible tocFile android.OptionalPath @@ -364,7 +365,7 @@ type libraryInterface interface { getWholeStaticMissingDeps() []string static() bool objs() Objects - reuseObjs() (Objects, []string) + reuseObjs() (Objects, []string, android.Paths) toc() android.OptionalPath // Returns true if the build options for the module have selected a static or shared build @@ -623,6 +624,7 @@ func (library *libraryDecorator) link(ctx ModuleContext, library.reexportFlags(flags) library.reuseExportedFlags = append(library.reuseExportedFlags, flags...) library.reexportDeps(library.baseCompiler.deps) // TODO: restrict to aidl deps + library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.deps...) } } @@ -635,6 +637,7 @@ func (library *libraryDecorator) link(ctx ModuleContext, library.reexportFlags(flags) library.reuseExportedFlags = append(library.reuseExportedFlags, flags...) library.reexportDeps(library.baseCompiler.deps) // TODO: restrict to proto deps + library.reuseExportedDeps = append(library.reuseExportedDeps, library.baseCompiler.deps...) } } @@ -659,8 +662,8 @@ func (library *libraryDecorator) objs() Objects { return library.objects } -func (library *libraryDecorator) reuseObjs() (Objects, []string) { - return library.reuseObjects, library.reuseExportedFlags +func (library *libraryDecorator) reuseObjs() (Objects, []string, android.Paths) { + return library.reuseObjects, library.reuseExportedFlags, library.reuseExportedDeps } func (library *libraryDecorator) toc() android.OptionalPath {