cc: improve combined static/shared libraries
Allow combined static/shared libraries to specify separate dependencies,
and recompile objects if static or shared cflags are set.
Change-Id: I9fd71d8debd5ade5637389ee38e793082d6d18bb
diff --git a/cc/cc.go b/cc/cc.go
index 2d49730..f057405 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -920,12 +920,18 @@
BuildStatic bool `blueprint:"mutated"`
BuildShared bool `blueprint:"mutated"`
Static struct {
- Srcs []string `android:"arch_variant"`
- Cflags []string `android:"arch_variant"`
+ Srcs []string `android:"arch_variant"`
+ Cflags []string `android:"arch_variant"`
+ Whole_static_libs []string `android:"arch_variant"`
+ Static_libs []string `android:"arch_variant"`
+ Shared_libs []string `android:"arch_variant"`
} `android:"arch_variant"`
Shared struct {
- Srcs []string `android:"arch_variant"`
- Cflags []string `android:"arch_variant"`
+ Srcs []string `android:"arch_variant"`
+ Cflags []string `android:"arch_variant"`
+ Whole_static_libs []string `android:"arch_variant"`
+ Static_libs []string `android:"arch_variant"`
+ Shared_libs []string `android:"arch_variant"`
} `android:"arch_variant"`
}
}
@@ -971,11 +977,18 @@
func (c *CCLibrary) depNames(ctx common.AndroidBaseContext, depNames CCDeps) CCDeps {
depNames = c.CCLinked.depNames(ctx, depNames)
- if !c.static() {
+ if c.static() {
+ depNames.WholeStaticLibs = append(depNames.WholeStaticLibs, c.LibraryProperties.Static.Whole_static_libs...)
+ depNames.StaticLibs = append(depNames.StaticLibs, c.LibraryProperties.Static.Static_libs...)
+ depNames.SharedLibs = append(depNames.SharedLibs, c.LibraryProperties.Static.Shared_libs...)
+ } else {
if ctx.Device() {
depNames.CrtBegin = "crtbegin_so"
depNames.CrtEnd = "crtend_so"
}
+ depNames.WholeStaticLibs = append(depNames.WholeStaticLibs, c.LibraryProperties.Shared.Whole_static_libs...)
+ depNames.StaticLibs = append(depNames.StaticLibs, c.LibraryProperties.Shared.Static_libs...)
+ depNames.SharedLibs = append(depNames.SharedLibs, c.LibraryProperties.Shared.Shared_libs...)
}
return depNames
@@ -1082,7 +1095,10 @@
if c.getReuseFrom().ccLibrary() == c {
c.reuseObjFiles = objFiles
} else {
- objFiles = append([]string(nil), c.getReuseFrom().getReuseObjFiles()...)
+ if c.getReuseFrom().ccLibrary().LibraryProperties.Static.Cflags == nil &&
+ c.LibraryProperties.Shared.Cflags == nil {
+ objFiles = append([]string(nil), c.getReuseFrom().getReuseObjFiles()...)
+ }
}
if c.static() {