Add support for binary and static library and prebuilts
Add cc_prebuilt_library_static and cc_prebuilt_binary module types. Bug: 35576244 Test: Add cc_prebuilt_library_static and cc_prebuilt_binary modules and verify they are used Change-Id: I708ec7b1ed1a0eddae083159575ae04d5ea25a37
This commit is contained in:
parent
dfee1bcf43
commit
de89fb8707
|
@ -22,6 +22,8 @@ import (
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
android.RegisterModuleType("cc_prebuilt_library_shared", prebuiltSharedLibraryFactory)
|
android.RegisterModuleType("cc_prebuilt_library_shared", prebuiltSharedLibraryFactory)
|
||||||
|
android.RegisterModuleType("cc_prebuilt_library_static", prebuiltStaticLibraryFactory)
|
||||||
|
android.RegisterModuleType("cc_prebuilt_binary", prebuiltBinaryFactory)
|
||||||
}
|
}
|
||||||
|
|
||||||
type prebuiltLinkerInterface interface {
|
type prebuiltLinkerInterface interface {
|
||||||
|
@ -29,17 +31,21 @@ type prebuiltLinkerInterface interface {
|
||||||
prebuilt() *android.Prebuilt
|
prebuilt() *android.Prebuilt
|
||||||
}
|
}
|
||||||
|
|
||||||
type prebuiltLibraryLinker struct {
|
type prebuiltLinker struct {
|
||||||
*libraryDecorator
|
|
||||||
android.Prebuilt
|
android.Prebuilt
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ prebuiltLinkerInterface = (*prebuiltLibraryLinker)(nil)
|
func (p *prebuiltLinker) prebuilt() *android.Prebuilt {
|
||||||
|
|
||||||
func (p *prebuiltLibraryLinker) prebuilt() *android.Prebuilt {
|
|
||||||
return &p.Prebuilt
|
return &p.Prebuilt
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type prebuiltLibraryLinker struct {
|
||||||
|
*libraryDecorator
|
||||||
|
prebuiltLinker
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ prebuiltLinkerInterface = (*prebuiltLibraryLinker)(nil)
|
||||||
|
|
||||||
func (p *prebuiltLibraryLinker) linkerProps() []interface{} {
|
func (p *prebuiltLibraryLinker) linkerProps() []interface{} {
|
||||||
props := p.libraryDecorator.linkerProps()
|
props := p.libraryDecorator.linkerProps()
|
||||||
return append(props, &p.Prebuilt.Properties)
|
return append(props, &p.Prebuilt.Properties)
|
||||||
|
@ -61,13 +67,61 @@ func (p *prebuiltLibraryLinker) link(ctx ModuleContext,
|
||||||
|
|
||||||
func prebuiltSharedLibraryFactory() (blueprint.Module, []interface{}) {
|
func prebuiltSharedLibraryFactory() (blueprint.Module, []interface{}) {
|
||||||
module, library := NewLibrary(android.HostAndDeviceSupported)
|
module, library := NewLibrary(android.HostAndDeviceSupported)
|
||||||
|
library.BuildOnlyShared()
|
||||||
module.compiler = nil
|
module.compiler = nil
|
||||||
|
|
||||||
prebuilt := &prebuiltLibraryLinker{
|
prebuilt := &prebuiltLibraryLinker{
|
||||||
libraryDecorator: library,
|
libraryDecorator: library,
|
||||||
}
|
}
|
||||||
module.linker = prebuilt
|
module.linker = prebuilt
|
||||||
module.installer = prebuilt
|
|
||||||
|
return module.Init()
|
||||||
|
}
|
||||||
|
|
||||||
|
func prebuiltStaticLibraryFactory() (blueprint.Module, []interface{}) {
|
||||||
|
module, library := NewLibrary(android.HostAndDeviceSupported)
|
||||||
|
library.BuildOnlyStatic()
|
||||||
|
module.compiler = nil
|
||||||
|
|
||||||
|
prebuilt := &prebuiltLibraryLinker{
|
||||||
|
libraryDecorator: library,
|
||||||
|
}
|
||||||
|
module.linker = prebuilt
|
||||||
|
|
||||||
|
return module.Init()
|
||||||
|
}
|
||||||
|
|
||||||
|
type prebuiltBinaryLinker struct {
|
||||||
|
*binaryDecorator
|
||||||
|
prebuiltLinker
|
||||||
|
}
|
||||||
|
|
||||||
|
var _ prebuiltLinkerInterface = (*prebuiltBinaryLinker)(nil)
|
||||||
|
|
||||||
|
func (p *prebuiltBinaryLinker) linkerProps() []interface{} {
|
||||||
|
props := p.binaryDecorator.linkerProps()
|
||||||
|
return append(props, &p.Prebuilt.Properties)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *prebuiltBinaryLinker) link(ctx ModuleContext,
|
||||||
|
flags Flags, deps PathDeps, objs Objects) android.Path {
|
||||||
|
// TODO(ccross): verify shared library dependencies
|
||||||
|
if len(p.Prebuilt.Properties.Srcs) > 0 {
|
||||||
|
// TODO(ccross): .toc optimization, stripping, packing
|
||||||
|
return p.Prebuilt.Path(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func prebuiltBinaryFactory() (blueprint.Module, []interface{}) {
|
||||||
|
module, binary := NewBinary(android.HostAndDeviceSupported)
|
||||||
|
module.compiler = nil
|
||||||
|
|
||||||
|
prebuilt := &prebuiltBinaryLinker{
|
||||||
|
binaryDecorator: binary,
|
||||||
|
}
|
||||||
|
module.linker = prebuilt
|
||||||
|
|
||||||
return module.Init()
|
return module.Init()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue