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
This commit is contained in:
18
cc/cc.go
18
cc/cc.go
@@ -922,10 +922,16 @@ type CCLibrary struct {
|
|||||||
Static struct {
|
Static struct {
|
||||||
Srcs []string `android:"arch_variant"`
|
Srcs []string `android:"arch_variant"`
|
||||||
Cflags []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"`
|
} `android:"arch_variant"`
|
||||||
Shared struct {
|
Shared struct {
|
||||||
Srcs []string `android:"arch_variant"`
|
Srcs []string `android:"arch_variant"`
|
||||||
Cflags []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"`
|
} `android:"arch_variant"`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -971,11 +977,18 @@ func CCLibraryFactory() (blueprint.Module, []interface{}) {
|
|||||||
|
|
||||||
func (c *CCLibrary) depNames(ctx common.AndroidBaseContext, depNames CCDeps) CCDeps {
|
func (c *CCLibrary) depNames(ctx common.AndroidBaseContext, depNames CCDeps) CCDeps {
|
||||||
depNames = c.CCLinked.depNames(ctx, depNames)
|
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() {
|
if ctx.Device() {
|
||||||
depNames.CrtBegin = "crtbegin_so"
|
depNames.CrtBegin = "crtbegin_so"
|
||||||
depNames.CrtEnd = "crtend_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
|
return depNames
|
||||||
@@ -1082,8 +1095,11 @@ func (c *CCLibrary) compileModule(ctx common.AndroidModuleContext,
|
|||||||
if c.getReuseFrom().ccLibrary() == c {
|
if c.getReuseFrom().ccLibrary() == c {
|
||||||
c.reuseObjFiles = objFiles
|
c.reuseObjFiles = objFiles
|
||||||
} else {
|
} else {
|
||||||
|
if c.getReuseFrom().ccLibrary().LibraryProperties.Static.Cflags == nil &&
|
||||||
|
c.LibraryProperties.Shared.Cflags == nil {
|
||||||
objFiles = append([]string(nil), c.getReuseFrom().getReuseObjFiles()...)
|
objFiles = append([]string(nil), c.getReuseFrom().getReuseObjFiles()...)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if c.static() {
|
if c.static() {
|
||||||
c.compileStaticLibrary(ctx, flags, deps, objFiles)
|
c.compileStaticLibrary(ctx, flags, deps, objFiles)
|
||||||
|
Reference in New Issue
Block a user