From 6553f5ef573316f40aa4b00f20b676e6c4026327 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Thu, 10 Mar 2016 18:14:25 -0800 Subject: Propagate missing dependencies when using whole_static_libs Currently, whole_static_libs with missing dependencies are silently ignored. Instead, when getting the object files from the other module, add its missing dependencies to the current module. Change-Id: I12472dede2dfafdded56268bfd37f60063b637c4 --- cc/cc.go | 18 ++++++++++++++++++ common/module.go | 8 ++++++++ 2 files changed, 26 insertions(+) diff --git a/cc/cc.go b/cc/cc.go index 441860b4..e091be3f 100644 --- a/cc/cc.go +++ b/cc/cc.go @@ -791,6 +791,13 @@ func (c *CCBase) depsToPaths(ctx common.AndroidModuleContext, depNames CCDeps) C for _, m := range wholeStaticLibModules { if staticLib, ok := m.(ccLibraryInterface); ok && staticLib.static() { + if missingDeps := staticLib.getWholeStaticMissingDeps(); missingDeps != nil { + postfix := " (required by " + ctx.OtherModuleName(m) + ")" + for i := range missingDeps { + missingDeps[i] += postfix + } + ctx.AddMissingDependencies(missingDeps) + } depPaths.WholeStaticLibObjFiles = append(depPaths.WholeStaticLibObjFiles, staticLib.allObjFiles()...) } else { @@ -1136,6 +1143,10 @@ type CCLibrary struct { out common.Path systemLibs []string + // If we're used as a whole_static_lib, our missing dependencies need + // to be given + wholeStaticMissingDeps []string + LibraryProperties CCLibraryProperties } @@ -1154,6 +1165,7 @@ type ccLibraryInterface interface { getReuseFrom() ccLibraryInterface getReuseObjFiles() common.Paths allObjFiles() common.Paths + getWholeStaticMissingDeps() []string } var _ ccLibraryInterface = (*CCLibrary)(nil) @@ -1224,6 +1236,10 @@ func (c *CCLibrary) allObjFiles() common.Paths { return c.objFiles } +func (c *CCLibrary) getWholeStaticMissingDeps() []string { + return c.wholeStaticMissingDeps +} + func (c *CCLibrary) exportedFlags() []string { return c.exportFlags } @@ -1294,6 +1310,8 @@ func (c *CCLibrary) compileStaticLibrary(ctx common.AndroidModuleContext, TransformObjToStaticLib(ctx, objFiles, ccFlagsToBuilderFlags(flags), outputFile) } + c.wholeStaticMissingDeps = ctx.GetMissingDependencies() + c.objFiles = objFiles c.out = outputFile diff --git a/common/module.go b/common/module.go index 844db7f6..8e459527 100644 --- a/common/module.go +++ b/common/module.go @@ -79,6 +79,8 @@ type AndroidModuleContext interface { InstallFile(installPath OutputPath, srcPath Path, deps ...Path) Path InstallFileName(installPath OutputPath, name string, srcPath Path, deps ...Path) Path CheckbuildFile(srcPath Path) + + AddMissingDependencies(deps []string) } type AndroidModule interface { @@ -482,6 +484,12 @@ func (a *androidModuleContext) GetMissingDependencies() []string { return a.missingDeps } +func (a *androidModuleContext) AddMissingDependencies(deps []string) { + if deps != nil { + a.missingDeps = append(a.missingDeps, deps...) + } +} + func (a *androidBaseContextImpl) Arch() Arch { return a.arch } -- cgit v1.2.3