summaryrefslogtreecommitdiff
path: root/rust/source_provider.go
diff options
context:
space:
mode:
Diffstat (limited to 'rust/source_provider.go')
-rw-r--r--rust/source_provider.go51
1 files changed, 34 insertions, 17 deletions
diff --git a/rust/source_provider.go b/rust/source_provider.go
index 503880f84..76679c222 100644
--- a/rust/source_provider.go
+++ b/rust/source_provider.go
@@ -27,43 +27,60 @@ type SourceProviderProperties struct {
Crate_name string `android:"arch_variant"`
}
-type baseSourceProvider struct {
+type BaseSourceProvider struct {
Properties SourceProviderProperties
- outputFile android.Path
- subAndroidMkOnce map[subAndroidMkProvider]bool
+ OutputFile android.Path
+ subAndroidMkOnce map[SubAndroidMkProvider]bool
subName string
}
-var _ SourceProvider = (*baseSourceProvider)(nil)
+var _ SourceProvider = (*BaseSourceProvider)(nil)
type SourceProvider interface {
- generateSource(ctx android.ModuleContext, deps PathDeps) android.Path
+ GenerateSource(ctx android.ModuleContext, deps PathDeps) android.Path
Srcs() android.Paths
- sourceProviderProps() []interface{}
- sourceProviderDeps(ctx DepsContext, deps Deps) Deps
+ SourceProviderProps() []interface{}
+ SourceProviderDeps(ctx DepsContext, deps Deps) Deps
setSubName(subName string)
}
-func (sp *baseSourceProvider) Srcs() android.Paths {
- return android.Paths{sp.outputFile}
+func (sp *BaseSourceProvider) Srcs() android.Paths {
+ return android.Paths{sp.OutputFile}
}
-func (sp *baseSourceProvider) generateSource(ctx android.ModuleContext, deps PathDeps) android.Path {
- panic("baseSourceProviderModule does not implement generateSource()")
+func (sp *BaseSourceProvider) GenerateSource(ctx android.ModuleContext, deps PathDeps) android.Path {
+ panic("BaseSourceProviderModule does not implement GenerateSource()")
}
-func (sp *baseSourceProvider) sourceProviderProps() []interface{} {
+func (sp *BaseSourceProvider) SourceProviderProps() []interface{} {
return []interface{}{&sp.Properties}
}
-func NewSourceProvider() *baseSourceProvider {
- return &baseSourceProvider{
+func NewSourceProvider() *BaseSourceProvider {
+ return &BaseSourceProvider{
Properties: SourceProviderProperties{},
}
}
-func (sp *baseSourceProvider) getStem(ctx android.ModuleContext) string {
+func NewSourceProviderModule(hod android.HostOrDeviceSupported, sourceProvider SourceProvider, enableLints bool) *Module {
+ _, library := NewRustLibrary(hod)
+ library.BuildOnlyRust()
+ library.sourceProvider = sourceProvider
+
+ module := newModule(hod, android.MultilibBoth)
+ module.sourceProvider = sourceProvider
+ module.compiler = library
+
+ if !enableLints {
+ library.setNoLint()
+ module.setClippy(false)
+ }
+
+ return module
+}
+
+func (sp *BaseSourceProvider) getStem(ctx android.ModuleContext) string {
if String(sp.Properties.Source_stem) == "" {
ctx.PropertyErrorf("source_stem",
"source_stem property is undefined but required for rust_bindgen modules")
@@ -71,10 +88,10 @@ func (sp *baseSourceProvider) getStem(ctx android.ModuleContext) string {
return String(sp.Properties.Source_stem)
}
-func (sp *baseSourceProvider) sourceProviderDeps(ctx DepsContext, deps Deps) Deps {
+func (sp *BaseSourceProvider) SourceProviderDeps(ctx DepsContext, deps Deps) Deps {
return deps
}
-func (sp *baseSourceProvider) setSubName(subName string) {
+func (sp *BaseSourceProvider) setSubName(subName string) {
sp.subName = subName
}