Enable select syntax support for phony_deps in phony_rule

Previously, `phony_deps` in `phony_rule` was a simple []string type, so
the select syntax was not supported. This change modifies it to a
Configurable[[]string] type to enable select syntax support.

Bug: 354850153
Test: Add select syntax in the Andorid.bp
Change-Id: Ibc5e5ee5d8fb9c19dc45d744a71b625fe94c9d88
This commit is contained in:
Nelson Li
2024-07-23 15:26:01 +08:00
parent 39d3883500
commit 154e05ba51

View File

@@ -20,6 +20,8 @@ import (
"strings" "strings"
"android/soong/android" "android/soong/android"
"github.com/google/blueprint/proptools"
) )
func init() { func init() {
@@ -88,14 +90,15 @@ type PhonyRule struct {
android.ModuleBase android.ModuleBase
android.DefaultableModuleBase android.DefaultableModuleBase
properties PhonyProperties phonyDepsModuleNames []string
properties PhonyProperties
} }
type PhonyProperties struct { type PhonyProperties struct {
// The Phony_deps is the set of all dependencies for this target, // The Phony_deps is the set of all dependencies for this target,
// and it can function similarly to .PHONY in a makefile. // and it can function similarly to .PHONY in a makefile.
// Additionally, dependencies within it can even include genrule. // Additionally, dependencies within it can even include genrule.
Phony_deps []string Phony_deps proptools.Configurable[[]string]
} }
// The phony_rule provides functionality similar to the .PHONY in a makefile. // The phony_rule provides functionality similar to the .PHONY in a makefile.
@@ -109,13 +112,14 @@ func PhonyRuleFactory() android.Module {
} }
func (p *PhonyRule) GenerateAndroidBuildActions(ctx android.ModuleContext) { func (p *PhonyRule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
p.phonyDepsModuleNames = p.properties.Phony_deps.GetOrDefault(p.ConfigurableEvaluator(ctx), nil)
} }
func (p *PhonyRule) AndroidMk() android.AndroidMkData { func (p *PhonyRule) AndroidMk() android.AndroidMkData {
return android.AndroidMkData{ return android.AndroidMkData{
Custom: func(w io.Writer, name, prefix, moduleDir string, data android.AndroidMkData) { Custom: func(w io.Writer, name, prefix, moduleDir string, data android.AndroidMkData) {
if len(p.properties.Phony_deps) > 0 { if len(p.phonyDepsModuleNames) > 0 {
depModulesStr := strings.Join(p.properties.Phony_deps, " ") depModulesStr := strings.Join(p.phonyDepsModuleNames, " ")
fmt.Fprintln(w, ".PHONY:", name) fmt.Fprintln(w, ".PHONY:", name)
fmt.Fprintln(w, name, ":", depModulesStr) fmt.Fprintln(w, name, ":", depModulesStr)
} }