Merge "Make soong mm/ targets recursive" am: 6d7afb8637
am: e94d74c642
Change-Id: I30980eb7e996d9dc16cc190e2eb5d58dca501b22
This commit is contained in:
@@ -836,12 +836,21 @@ func BuildTargetSingleton() blueprint.Singleton {
|
|||||||
return &buildTargetSingleton{}
|
return &buildTargetSingleton{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func parentDir(dir string) string {
|
||||||
|
dir, _ = filepath.Split(dir)
|
||||||
|
return filepath.Clean(dir)
|
||||||
|
}
|
||||||
|
|
||||||
type buildTargetSingleton struct{}
|
type buildTargetSingleton struct{}
|
||||||
|
|
||||||
func (c *buildTargetSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) {
|
func (c *buildTargetSingleton) GenerateBuildActions(ctx blueprint.SingletonContext) {
|
||||||
checkbuildDeps := []string{}
|
checkbuildDeps := []string{}
|
||||||
|
|
||||||
dirModules := make(map[string][]string)
|
mmTarget := func(dir string) string {
|
||||||
|
return filepath.Join("mm", dir)
|
||||||
|
}
|
||||||
|
|
||||||
|
modulesInDir := make(map[string][]string)
|
||||||
|
|
||||||
ctx.VisitAllModules(func(module blueprint.Module) {
|
ctx.VisitAllModules(func(module blueprint.Module) {
|
||||||
if a, ok := module.(Module); ok {
|
if a, ok := module.(Module); ok {
|
||||||
@@ -851,11 +860,11 @@ func (c *buildTargetSingleton) GenerateBuildActions(ctx blueprint.SingletonConte
|
|||||||
|
|
||||||
if checkbuildTarget != "" {
|
if checkbuildTarget != "" {
|
||||||
checkbuildDeps = append(checkbuildDeps, checkbuildTarget)
|
checkbuildDeps = append(checkbuildDeps, checkbuildTarget)
|
||||||
dirModules[blueprintDir] = append(dirModules[blueprintDir], checkbuildTarget)
|
modulesInDir[blueprintDir] = append(modulesInDir[blueprintDir], checkbuildTarget)
|
||||||
}
|
}
|
||||||
|
|
||||||
if installTarget != "" {
|
if installTarget != "" {
|
||||||
dirModules[blueprintDir] = append(dirModules[blueprintDir], installTarget)
|
modulesInDir[blueprintDir] = append(modulesInDir[blueprintDir], installTarget)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -873,13 +882,35 @@ func (c *buildTargetSingleton) GenerateBuildActions(ctx blueprint.SingletonConte
|
|||||||
Optional: true,
|
Optional: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create a mm/<directory> target that depends on all modules in a directory
|
// Ensure ancestor directories are in modulesInDir
|
||||||
dirs := sortedKeys(dirModules)
|
dirs := sortedKeys(modulesInDir)
|
||||||
|
for _, dir := range dirs {
|
||||||
|
dir := parentDir(dir)
|
||||||
|
for dir != "." && dir != "/" {
|
||||||
|
if _, exists := modulesInDir[dir]; exists {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
modulesInDir[dir] = nil
|
||||||
|
dir = parentDir(dir)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make directories build their direct subdirectories
|
||||||
|
dirs = sortedKeys(modulesInDir)
|
||||||
|
for _, dir := range dirs {
|
||||||
|
p := parentDir(dir)
|
||||||
|
if p != "." && p != "/" {
|
||||||
|
modulesInDir[p] = append(modulesInDir[p], mmTarget(dir))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a mm/<directory> target that depends on all modules in a directory, and depends
|
||||||
|
// on the mm/* targets of all of its subdirectories that contain Android.bp files.
|
||||||
for _, dir := range dirs {
|
for _, dir := range dirs {
|
||||||
ctx.Build(pctx, blueprint.BuildParams{
|
ctx.Build(pctx, blueprint.BuildParams{
|
||||||
Rule: blueprint.Phony,
|
Rule: blueprint.Phony,
|
||||||
Outputs: []string{filepath.Join("mm", dir)},
|
Outputs: []string{mmTarget(dir)},
|
||||||
Implicits: dirModules[dir],
|
Implicits: modulesInDir[dir],
|
||||||
// HACK: checkbuild should be an optional build, but force it
|
// HACK: checkbuild should be an optional build, but force it
|
||||||
// enabled for now in standalone builds
|
// enabled for now in standalone builds
|
||||||
Optional: ctx.Config().(Config).EmbeddedInMake(),
|
Optional: ctx.Config().(Config).EmbeddedInMake(),
|
||||||
|
Reference in New Issue
Block a user