Add cc_prebuilt_object.
To be used for prebuilt object support in SDK snapshots.
Test: m nothing
Bug: 148934017
Change-Id: I53d58100cc1d410c5cf5b7906de7ed6f7add2035
diff --git a/cc/prebuilt.go b/cc/prebuilt.go
index 7f21721..fc9cc17 100644
--- a/cc/prebuilt.go
+++ b/cc/prebuilt.go
@@ -26,6 +26,7 @@
ctx.RegisterModuleType("cc_prebuilt_library", PrebuiltLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_library_shared", PrebuiltSharedLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_library_static", PrebuiltStaticLibraryFactory)
+ ctx.RegisterModuleType("cc_prebuilt_object", prebuiltObjectFactory)
ctx.RegisterModuleType("cc_prebuilt_binary", prebuiltBinaryFactory)
}
@@ -217,6 +218,50 @@
return module, library
}
+type prebuiltObjectProperties struct {
+ Srcs []string `android:"path,arch_variant"`
+}
+
+type prebuiltObjectLinker struct {
+ android.Prebuilt
+ objectLinker
+
+ properties prebuiltObjectProperties
+}
+
+func (p *prebuiltObjectLinker) prebuilt() *android.Prebuilt {
+ return &p.Prebuilt
+}
+
+var _ prebuiltLinkerInterface = (*prebuiltObjectLinker)(nil)
+
+func (p *prebuiltObjectLinker) link(ctx ModuleContext,
+ flags Flags, deps PathDeps, objs Objects) android.Path {
+ if len(p.properties.Srcs) > 0 {
+ return p.Prebuilt.SingleSourcePath(ctx)
+ }
+ return nil
+}
+
+func newPrebuiltObject() *Module {
+ module := newObject()
+ prebuilt := &prebuiltObjectLinker{
+ objectLinker: objectLinker{
+ baseLinker: NewBaseLinker(nil),
+ },
+ }
+ module.linker = prebuilt
+ module.AddProperties(&prebuilt.properties)
+ android.InitPrebuiltModule(module, &prebuilt.properties.Srcs)
+ android.InitSdkAwareModule(module)
+ return module
+}
+
+func prebuiltObjectFactory() android.Module {
+ module := newPrebuiltObject()
+ return module.Init()
+}
+
type prebuiltBinaryLinker struct {
*binaryDecorator
prebuiltLinker