Include static lib information for the snapshot modules
snapshot modules require the list of static libs to find the NOTICE files for the snapshot modules. snapshot binaries must include static_executable property to check if non static binaries have libc as a static lib. Bug: 190690041 Test: Check NOTICE for libaudiopreprocessing.so built from snapshots. Change-Id: I53f7549a158ab27ada87833a3f4d58620aa7c3cf
This commit is contained in:
parent
7ce730b90c
commit
5e03586365
6 changed files with 41 additions and 2 deletions
10
cc/cc.go
10
cc/cc.go
|
@ -337,6 +337,7 @@ type BaseProperties struct {
|
|||
|
||||
// Used by vendor snapshot to record dependencies from snapshot modules.
|
||||
SnapshotSharedLibs []string `blueprint:"mutated"`
|
||||
SnapshotStaticLibs []string `blueprint:"mutated"`
|
||||
SnapshotRuntimeLibs []string `blueprint:"mutated"`
|
||||
|
||||
Installable *bool
|
||||
|
@ -2856,6 +2857,8 @@ func (c *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||
c.Properties.AndroidMkStaticLibs = append(
|
||||
c.Properties.AndroidMkStaticLibs, makeLibName)
|
||||
}
|
||||
// Record BaseLibName for snapshots.
|
||||
c.Properties.SnapshotStaticLibs = append(c.Properties.SnapshotStaticLibs, BaseLibName(depName))
|
||||
}
|
||||
} else if !c.IsStubs() {
|
||||
// Stubs lib doesn't link to the runtime lib, object, crt, etc. dependencies.
|
||||
|
@ -3179,6 +3182,13 @@ func (c *Module) Binary() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (c *Module) StaticExecutable() bool {
|
||||
if b, ok := c.linker.(*binaryDecorator); ok {
|
||||
return b.static()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (c *Module) Object() bool {
|
||||
if o, ok := c.linker.(interface {
|
||||
object() bool
|
||||
|
|
|
@ -94,6 +94,9 @@ type Snapshottable interface {
|
|||
// SnapshotSharedLibs returns the list of shared library dependencies for this module.
|
||||
SnapshotSharedLibs() []string
|
||||
|
||||
// SnapshotStaticLibs returns the list of static library dependencies for this module.
|
||||
SnapshotStaticLibs() []string
|
||||
|
||||
// IsSnapshotPrebuilt returns true if this module is a snapshot prebuilt.
|
||||
IsSnapshotPrebuilt() bool
|
||||
}
|
||||
|
@ -226,6 +229,9 @@ type LinkableInterface interface {
|
|||
// Header returns true if this is a library headers module.
|
||||
Header() bool
|
||||
|
||||
// StaticExecutable returns true if this is a binary module with "static_executable: true".
|
||||
StaticExecutable() bool
|
||||
|
||||
// EverInstallable returns true if the module is ever installable
|
||||
EverInstallable() bool
|
||||
|
||||
|
|
|
@ -53,6 +53,10 @@ func (m *Module) SnapshotSharedLibs() []string {
|
|||
return m.Properties.SnapshotSharedLibs
|
||||
}
|
||||
|
||||
func (m *Module) SnapshotStaticLibs() []string {
|
||||
return m.Properties.SnapshotStaticLibs
|
||||
}
|
||||
|
||||
// snapshotLibraryInterface is an interface for libraries captured to VNDK / vendor snapshots.
|
||||
type snapshotLibraryInterface interface {
|
||||
libraryInterface
|
||||
|
|
|
@ -242,10 +242,12 @@ type snapshotJsonFlags struct {
|
|||
SanitizeUbsanDep bool `json:",omitempty"`
|
||||
|
||||
// binary flags
|
||||
Symlinks []string `json:",omitempty"`
|
||||
Symlinks []string `json:",omitempty"`
|
||||
StaticExecutable bool `json:",omitempty"`
|
||||
|
||||
// dependencies
|
||||
SharedLibs []string `json:",omitempty"`
|
||||
StaticLibs []string `json:",omitempty"`
|
||||
RuntimeLibs []string `json:",omitempty"`
|
||||
Required []string `json:",omitempty"`
|
||||
|
||||
|
@ -381,6 +383,8 @@ func (c *snapshotSingleton) GenerateBuildActions(ctx android.SingletonContext) {
|
|||
if m.Shared() {
|
||||
prop.SharedLibs = m.SnapshotSharedLibs()
|
||||
}
|
||||
// static libs dependencies are required to collect the NOTICE files.
|
||||
prop.StaticLibs = m.SnapshotStaticLibs()
|
||||
if sanitizable, ok := m.(PlatformSanitizeable); ok {
|
||||
if sanitizable.Static() && sanitizable.SanitizePropDefined() {
|
||||
prop.SanitizeMinimalDep = sanitizable.MinimalRuntimeDep() || sanitizable.MinimalRuntimeNeeded()
|
||||
|
@ -426,8 +430,10 @@ func (c *snapshotSingleton) GenerateBuildActions(ctx android.SingletonContext) {
|
|||
} else if m.Binary() {
|
||||
// binary flags
|
||||
prop.Symlinks = m.Symlinks()
|
||||
prop.StaticExecutable = m.StaticExecutable()
|
||||
prop.SharedLibs = m.SnapshotSharedLibs()
|
||||
|
||||
// static libs dependencies are required to collect the NOTICE files.
|
||||
prop.StaticLibs = m.SnapshotStaticLibs()
|
||||
// install bin
|
||||
binPath := m.OutputFile().Path()
|
||||
snapshotBinOut := filepath.Join(snapshotArchDir, targetArch, "binary", binPath.Base())
|
||||
|
|
|
@ -87,6 +87,7 @@ type BaseProperties struct {
|
|||
|
||||
// Used by vendor snapshot to record dependencies from snapshot modules.
|
||||
SnapshotSharedLibs []string `blueprint:"mutated"`
|
||||
SnapshotStaticLibs []string `blueprint:"mutated"`
|
||||
|
||||
// Make this module available when building for vendor ramdisk.
|
||||
// On device without a dedicated recovery partition, the module is only
|
||||
|
@ -259,6 +260,13 @@ func (mod *Module) Binary() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (mod *Module) StaticExecutable() bool {
|
||||
if !mod.Binary() {
|
||||
return false
|
||||
}
|
||||
return Bool(mod.compiler.(*binaryDecorator).Properties.Static_executable)
|
||||
}
|
||||
|
||||
func (mod *Module) Object() bool {
|
||||
// Rust has no modules which produce only object files.
|
||||
return false
|
||||
|
@ -1097,6 +1105,7 @@ func (mod *Module) depsToPaths(ctx android.ModuleContext) PathDeps {
|
|||
|
||||
// Record baseLibName for snapshots.
|
||||
mod.Properties.SnapshotSharedLibs = append(mod.Properties.SnapshotSharedLibs, cc.BaseLibName(depName))
|
||||
mod.Properties.SnapshotStaticLibs = append(mod.Properties.SnapshotStaticLibs, cc.BaseLibName(depName))
|
||||
|
||||
mod.Properties.AndroidMkSharedLibs = append(mod.Properties.AndroidMkSharedLibs, makeLibName)
|
||||
exportDep = true
|
||||
|
|
|
@ -57,6 +57,10 @@ func (mod *Module) SnapshotSharedLibs() []string {
|
|||
return mod.Properties.SnapshotSharedLibs
|
||||
}
|
||||
|
||||
func (mod *Module) SnapshotStaticLibs() []string {
|
||||
return mod.Properties.SnapshotStaticLibs
|
||||
}
|
||||
|
||||
func (mod *Module) Symlinks() []string {
|
||||
// TODO update this to return the list of symlinks when Rust supports defining symlinks
|
||||
return nil
|
||||
|
|
Loading…
Reference in a new issue