aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2016-03-10 18:14:25 -0800
committerDan Willemsen <dwillemsen@google.com>2016-03-11 21:52:34 +0000
commit6553f5ef573316f40aa4b00f20b676e6c4026327 (patch)
treeee2221fe90451290af6f033715746171754c6c5c
parenteb371e51d930b5ac79d962984d8b69e40420533d (diff)
downloadbuild_soong-6553f5ef573316f40aa4b00f20b676e6c4026327.tar.gz
build_soong-6553f5ef573316f40aa4b00f20b676e6c4026327.tar.bz2
build_soong-6553f5ef573316f40aa4b00f20b676e6c4026327.zip
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
-rw-r--r--cc/cc.go18
-rw-r--r--common/module.go8
2 files changed, 26 insertions, 0 deletions
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
}