Reland "Support per-module MakeVars"
This allows setting per-module make variables earlier in the build, particularly for prebuilt_build_tool users like LEX/M4/BISON (which will come in a later CL). I moved filegroup over because it's a simpler common interface, but it doesn't strictly need it. Test: Inspect out/soong/make_vars-*.mk, out/soong/late-*.mk Test: treehugger Change-Id: I38631129d82b0aad2438e83610bb6a97568bf932
This commit is contained in:
@@ -15,9 +15,7 @@
|
||||
package android
|
||||
|
||||
import (
|
||||
"io"
|
||||
"strings"
|
||||
"text/template"
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -71,23 +69,8 @@ func (fg *fileGroup) Srcs() Paths {
|
||||
return append(Paths{}, fg.srcs...)
|
||||
}
|
||||
|
||||
var androidMkTemplate = template.Must(template.New("filegroup").Parse(`
|
||||
ifdef {{.makeVar}}
|
||||
$(error variable {{.makeVar}} set by soong module is already set in make)
|
||||
endif
|
||||
{{.makeVar}} := {{.value}}
|
||||
.KATI_READONLY := {{.makeVar}}
|
||||
`))
|
||||
|
||||
func (fg *fileGroup) AndroidMk() AndroidMkData {
|
||||
return AndroidMkData{
|
||||
Custom: func(w io.Writer, name, prefix, moduleDir string, data AndroidMkData) {
|
||||
if makeVar := String(fg.properties.Export_to_make_var); makeVar != "" {
|
||||
androidMkTemplate.Execute(w, map[string]string{
|
||||
"makeVar": makeVar,
|
||||
"value": strings.Join(fg.srcs.Strings(), " "),
|
||||
})
|
||||
}
|
||||
},
|
||||
func (fg *fileGroup) MakeVars(ctx MakeVarsModuleContext) {
|
||||
if makeVar := String(fg.properties.Export_to_make_var); makeVar != "" {
|
||||
ctx.StrictRaw(makeVar, strings.Join(fg.srcs.Strings(), " "))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user