Dump Soong module type statistics to Make

Make will combine this information with statistics gathered from the
Make build, then dump it out to a build artifact.

Change-Id: I2bd84d4f8a8d145c37e3a4c4fcc8fece99e2a1de
diff --git a/android/androidmk.go b/android/androidmk.go
index 7d7707f..232a599 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -96,12 +96,28 @@
 
 	fmt.Fprintln(buf, "LOCAL_MODULE_MAKEFILE := $(lastword $(MAKEFILE_LIST))")
 
+	type_stats := make(map[string]int)
 	for _, mod := range mods {
 		err := translateAndroidMkModule(ctx, buf, mod)
 		if err != nil {
 			os.Remove(mkFile)
 			return err
 		}
+
+		if ctx.PrimaryModule(mod) == mod {
+			type_stats[ctx.ModuleType(mod)] += 1
+		}
+	}
+
+	keys := []string{}
+	fmt.Fprintln(buf, "\nSTATS.SOONG_MODULE_TYPE :=")
+	for k := range type_stats {
+		keys = append(keys, k)
+	}
+	sort.Strings(keys)
+	for _, mod_type := range keys {
+		fmt.Fprintln(buf, "STATS.SOONG_MODULE_TYPE +=", mod_type)
+		fmt.Fprintf(buf, "STATS.SOONG_MODULE_TYPE.%s := %d\n", mod_type, type_stats[mod_type])
 	}
 
 	// Don't write to the file if it hasn't changed