diff options
Diffstat (limited to 'rust/androidmk.go')
-rw-r--r-- | rust/androidmk.go | 44 |
1 files changed, 34 insertions, 10 deletions
diff --git a/rust/androidmk.go b/rust/androidmk.go index aea899baa..fda0a2579 100644 --- a/rust/androidmk.go +++ b/rust/androidmk.go @@ -26,18 +26,18 @@ import ( type AndroidMkContext interface { Name() string Target() android.Target - subAndroidMk(*android.AndroidMkData, interface{}) + SubAndroidMk(*android.AndroidMkData, interface{}) } -type subAndroidMkProvider interface { +type SubAndroidMkProvider interface { AndroidMk(AndroidMkContext, *android.AndroidMkData) } -func (mod *Module) subAndroidMk(data *android.AndroidMkData, obj interface{}) { +func (mod *Module) SubAndroidMk(data *android.AndroidMkData, obj interface{}) { if mod.subAndroidMkOnce == nil { - mod.subAndroidMkOnce = make(map[subAndroidMkProvider]bool) + mod.subAndroidMkOnce = make(map[SubAndroidMkProvider]bool) } - if androidmk, ok := obj.(subAndroidMkProvider); ok { + if androidmk, ok := obj.(SubAndroidMkProvider); ok { if !mod.subAndroidMkOnce[androidmk] { mod.subAndroidMkOnce[androidmk] = true androidmk.AndroidMk(mod, data) @@ -76,15 +76,19 @@ func (mod *Module) AndroidMk() android.AndroidMkData { }, } - mod.subAndroidMk(&ret, mod.compiler) - + if mod.compiler != nil && !mod.compiler.Disabled() { + mod.SubAndroidMk(&ret, mod.compiler) + } else if mod.sourceProvider != nil { + // If the compiler is disabled, this is a SourceProvider. + mod.SubAndroidMk(&ret, mod.sourceProvider) + } ret.SubName += mod.Properties.SubName return ret } func (binary *binaryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { - ctx.subAndroidMk(ret, binary.baseCompiler) + ctx.SubAndroidMk(ret, binary.baseCompiler) if binary.distFile.Valid() { ret.DistFiles = android.MakeDefaultDistFiles(binary.distFile.Path()) @@ -118,7 +122,7 @@ func (test *testDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidM } func (library *libraryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { - ctx.subAndroidMk(ret, library.baseCompiler) + ctx.SubAndroidMk(ret, library.baseCompiler) if library.rlib() { ret.Class = "RLIB_LIBRARIES" @@ -146,7 +150,7 @@ func (library *libraryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.An } func (procMacro *procMacroDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { - ctx.subAndroidMk(ret, procMacro.baseCompiler) + ctx.SubAndroidMk(ret, procMacro.baseCompiler) ret.Class = "PROC_MACRO_LIBRARIES" if procMacro.distFile.Valid() { @@ -155,6 +159,26 @@ func (procMacro *procMacroDecorator) AndroidMk(ctx AndroidMkContext, ret *androi } +func (sourceProvider *BaseSourceProvider) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { + outFile := sourceProvider.OutputFile + ret.Class = "ETC" + ret.OutputFile = android.OptionalPathForPath(outFile) + ret.SubName += sourceProvider.subName + ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) { + _, file := filepath.Split(outFile.String()) + stem, suffix, _ := android.SplitFileExt(file) + fmt.Fprintln(w, "LOCAL_MODULE_SUFFIX := "+suffix) + fmt.Fprintln(w, "LOCAL_MODULE_STEM := "+stem) + }) +} + +func (bindgen *bindgenDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { + ctx.SubAndroidMk(ret, bindgen.BaseSourceProvider) + ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) { + fmt.Fprintln(w, "LOCAL_UNINSTALLABLE_MODULE := true") + }) +} + func (compiler *baseCompiler) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) { // Soong installation is only supported for host modules. Have Make // installation trigger Soong installation. |