androidmk: convert stems prefixed with LOCAL_MODULE to suffix

Convert stem: LOCAL_MODULE + "32" to suffix: "32"

Change-Id: I7126e814bd35f502196abc087b5d0afb825d3665
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index 69481cf..55e47cb 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -18,7 +18,6 @@
 }{
 	// String properties
 	"LOCAL_MODULE":               {"name", bpparser.String},
-	"LOCAL_MODULE_STEM":          {"stem", bpparser.String},
 	"LOCAL_MODULE_CLASS":         {"class", bpparser.String},
 	"LOCAL_CXX_STL":              {"stl", bpparser.String},
 	"LOCAL_STRIP_MODULE":         {"strip", bpparser.String},
@@ -79,6 +78,7 @@
 }{
 	"LOCAL_C_INCLUDES":            {localIncludeDirs},
 	"LOCAL_EXPORT_C_INCLUDE_DIRS": {exportIncludeDirs},
+	"LOCAL_MODULE_STEM":           {stem},
 }
 
 func localAbsPath(value bpparser.Value) (*bpparser.Value, error) {
@@ -253,6 +253,22 @@
 	return nil
 }
 
+func stem(file *bpFile, value *mkparser.MakeString, appendVariable bool, class, suffix string) error {
+	val, err := makeVariableToBlueprint(file, value, bpparser.String)
+	if err != nil {
+		return err
+	}
+	varName := "stem"
+
+	if val.Expression != nil && val.Expression.Operator == '+' &&
+		val.Expression.Args[0].Variable == "LOCAL_MODULE" {
+		varName = "suffix"
+		val = &val.Expression.Args[1]
+	}
+
+	return setVariable(file, appendVariable, varName, val, true, class, suffix)
+}
+
 var deleteProperties = map[string]struct{}{
 	"LOCAL_CPP_EXTENSION": struct{}{},
 }