aboutsummaryrefslogtreecommitdiffstats
path: root/genrule
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2017-09-13 18:37:08 -0700
committerDan Willemsen <dwillemsen@google.com>2017-09-18 23:33:25 -0700
commit3e5bdf29ba6af25e7b82cf877db8e13b70d81512 (patch)
tree083bda03f48509955ea10ed1a1ad07a2ecd14946 /genrule
parent0c16293821e71d20c6e2a8dec394d169c2dc2372 (diff)
downloadbuild_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')
-rw-r--r--genrule/genrule.go46
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