Implement `host_required` and `target_required` properties.
They are counterparts of LOCAL_HOST_REQUIRED_MODULES and
LOCAL_TARGET_REQUIRED_MODULES respectively.
Fixes: 128693436
Test: treehugger, convert cts/hostsidetests/devicepolicy/Android.bp
Change-Id: Id66ffca6edffe18993ac51e8930f1d0e78178249
diff --git a/phony/phony.go b/phony/phony.go
index ed6a2fe..305a434 100644
--- a/phony/phony.go
+++ b/phony/phony.go
@@ -28,7 +28,9 @@
type phony struct {
android.ModuleBase
- requiredModuleNames []string
+ requiredModuleNames []string
+ hostRequiredModuleNames []string
+ targetRequiredModuleNames []string
}
func PhonyFactory() android.Module {
@@ -40,8 +42,12 @@
func (p *phony) GenerateAndroidBuildActions(ctx android.ModuleContext) {
p.requiredModuleNames = ctx.RequiredModuleNames()
- if len(p.requiredModuleNames) == 0 {
- ctx.PropertyErrorf("required", "phony must not have empty required dependencies in order to be useful(and therefore permitted).")
+ p.hostRequiredModuleNames = ctx.HostRequiredModuleNames()
+ p.targetRequiredModuleNames = ctx.TargetRequiredModuleNames()
+ if len(p.requiredModuleNames) == 0 &&
+ len(p.hostRequiredModuleNames) == 0 && len(p.targetRequiredModuleNames) == 0 {
+ ctx.PropertyErrorf("required", "phony must not have empty required dependencies "+
+ "in order to be useful(and therefore permitted).")
}
}
@@ -54,7 +60,18 @@
if p.Host() {
fmt.Fprintln(w, "LOCAL_IS_HOST_MODULE := true")
}
- fmt.Fprintln(w, "LOCAL_REQUIRED_MODULES := "+strings.Join(p.requiredModuleNames, " "))
+ if len(p.requiredModuleNames) > 0 {
+ fmt.Fprintln(w, "LOCAL_REQUIRED_MODULES :=",
+ strings.Join(p.requiredModuleNames, " "))
+ }
+ if len(p.hostRequiredModuleNames) > 0 {
+ fmt.Fprintln(w, "LOCAL_HOST_REQUIRED_MODULES :=",
+ strings.Join(p.hostRequiredModuleNames, " "))
+ }
+ if len(p.targetRequiredModuleNames) > 0 {
+ fmt.Fprintln(w, "LOCAL_TARGET_REQUIRED_MODULES :=",
+ strings.Join(p.targetRequiredModuleNames, " "))
+ }
fmt.Fprintln(w, "include $(BUILD_PHONY_PACKAGE)")
},
}