diff options
author | Dan Willemsen <dwillemsen@google.com> | 2017-09-13 18:37:08 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@google.com> | 2017-09-18 23:33:25 -0700 |
commit | 3e5bdf29ba6af25e7b82cf877db8e13b70d81512 (patch) | |
tree | 083bda03f48509955ea10ed1a1ad07a2ecd14946 /genrule/genrule.go | |
parent | 0c16293821e71d20c6e2a8dec394d169c2dc2372 (diff) | |
download | build_soong-3e5bdf29ba6af25e7b82cf877db8e13b70d81512.tar.gz build_soong-3e5bdf29ba6af25e7b82cf877db8e13b70d81512.tar.bz2 build_soong-3e5bdf29ba6af25e7b82cf877db8e13b70d81512.zip |
Add cc_genrule
cc_genrule is the same as a normal genrule, but can depend on other cc
modules (like cc_object).
Test: mmma external/minijail
Change-Id: I8df87665c7bdc76ce89c92755c054f967a818e57
Diffstat (limited to 'genrule/genrule.go')
-rw-r--r-- | genrule/genrule.go | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/genrule/genrule.go b/genrule/genrule.go index f390f813..479e67a6 100644 --- a/genrule/genrule.go +++ b/genrule/genrule.go @@ -28,8 +28,8 @@ import ( ) func init() { - android.RegisterModuleType("gensrcs", GenSrcsFactory) - android.RegisterModuleType("genrule", GenRuleFactory) + android.RegisterModuleType("gensrcs", genSrcsFactory) + android.RegisterModuleType("genrule", genRuleFactory) } var ( @@ -90,9 +90,13 @@ type generatorProperties struct { Srcs []string } -type generator struct { +type Module struct { android.ModuleBase + // For other packages to make their own genrules with extra + // properties + Extra interface{} + properties generatorProperties tasks taskFunc @@ -112,21 +116,21 @@ type generateTask struct { out android.WritablePaths } -func (g *generator) GeneratedSourceFiles() android.Paths { +func (g *Module) GeneratedSourceFiles() android.Paths { return g.outputFiles } -func (g *generator) Srcs() android.Paths { +func (g *Module) Srcs() android.Paths { return g.outputFiles } -func (g *generator) GeneratedHeaderDirs() android.Paths { +func (g *Module) GeneratedHeaderDirs() android.Paths { return g.exportedIncludeDirs } -func (g *generator) DepsMutator(ctx android.BottomUpMutatorContext) { +func (g *Module) DepsMutator(ctx android.BottomUpMutatorContext) { android.ExtractSourcesDeps(ctx, g.properties.Srcs) - if g, ok := ctx.Module().(*generator); ok { + if g, ok := ctx.Module().(*Module); ok { if len(g.properties.Tools) > 0 { ctx.AddFarVariationDependencies([]blueprint.Variation{ {"arch", ctx.AConfig().BuildOsVariant}, @@ -135,7 +139,7 @@ func (g *generator) DepsMutator(ctx android.BottomUpMutatorContext) { } } -func (g *generator) GenerateAndroidBuildActions(ctx android.ModuleContext) { +func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) { if len(g.properties.Tools) == 0 && len(g.properties.Tool_files) == 0 { ctx.ModuleErrorf("at least one `tools` or `tool_files` is required") return @@ -275,7 +279,7 @@ func (g *generator) GenerateAndroidBuildActions(ctx android.ModuleContext) { } } -func (g *generator) generateSourceFile(ctx android.ModuleContext, task generateTask) { +func (g *Module) generateSourceFile(ctx android.ModuleContext, task generateTask) { desc := "generate" if len(task.out) == 1 { desc += " " + task.out[0].Base() @@ -299,20 +303,18 @@ func (g *generator) generateSourceFile(ctx android.ModuleContext, task generateT } } -func generatorFactory(tasks taskFunc, props ...interface{}) android.Module { - module := &generator{ +func generatorFactory(tasks taskFunc, props ...interface{}) *Module { + module := &Module{ tasks: tasks, } module.AddProperties(props...) module.AddProperties(&module.properties) - android.InitAndroidModule(module) - return module } -func GenSrcsFactory() android.Module { +func NewGenSrcs() *Module { properties := &genSrcsProperties{} tasks := func(ctx android.ModuleContext, srcFiles android.Paths) []generateTask { @@ -329,12 +331,18 @@ func GenSrcsFactory() android.Module { return generatorFactory(tasks, properties) } +func genSrcsFactory() android.Module { + m := NewGenSrcs() + android.InitAndroidModule(m) + return m +} + type genSrcsProperties struct { // extension that will be substituted for each output file Output_extension string } -func GenRuleFactory() android.Module { +func NewGenRule() *Module { properties := &genRuleProperties{} tasks := func(ctx android.ModuleContext, srcFiles android.Paths) []generateTask { @@ -353,6 +361,12 @@ func GenRuleFactory() android.Module { return generatorFactory(tasks, properties) } +func genRuleFactory() android.Module { + m := NewGenRule() + android.InitAndroidModule(m) + return m +} + type genRuleProperties struct { // names of the output files that will be generated Out []string |