Support required property

This adds LOCAL_REQUIRED_MODULES to the generated Android.mk for any
dependencies in the "required" list of a module.

Change-Id: Ibcfe89dce7d247eb441af94e37388a59e71a75a9
diff --git a/android/androidmk.go b/android/androidmk.go
index 1e261a0..0afa1bd 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -200,6 +200,10 @@
 	fmt.Fprintln(w, "LOCAL_MULTILIB :=", amod.commonProperties.Compile_multilib)
 	fmt.Fprintln(w, "LOCAL_PREBUILT_MODULE_FILE :=", data.OutputFile.String())
 
+	if len(amod.commonProperties.Required) > 0 {
+		fmt.Fprintln(w, "LOCAL_REQUIRED_MODULES := "+strings.Join(amod.commonProperties.Required, " "))
+	}
+
 	archStr := amod.Arch().ArchType.String()
 	host := false
 	switch amod.Os().Class {
diff --git a/android/module.go b/android/module.go
index f1af53a..bf9dfaa 100644
--- a/android/module.go
+++ b/android/module.go
@@ -120,6 +120,9 @@
 	// init.rc files to be installed if this module is installed
 	Init_rc []string
 
+	// names of other modules to install if this module is installed
+	Required []string
+
 	// Set by TargetMutator
 	CompileTarget Target `blueprint:"mutated"`
 
diff --git a/cc/cc.go b/cc/cc.go
index 752046f..7984449 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -124,7 +124,6 @@
 
 type UnusedProperties struct {
 	Native_coverage *bool
-	Required        []string
 	Tags            []string
 }