Fix non-deterministic errors with LOCAL_*_x86_64

LOCAL_*_x86_64 was sometimes recognized as a _64 suffix and other times
as the correct _x86_64 suffix, based on the random order of the
propertyPrefixes map.  Replace the map with a slice so that the ordering
is consistent, and ensure 64 as after x86_64.

Change-Id: I1a4b4959f8ef4273ad4a1cdd0672ad557bf1891e
diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index fee15d2..3d68353 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -313,15 +313,17 @@
 	"LOCAL_CPP_EXTENSION": struct{}{},
 }
 
-var propertyPrefixes = map[string]string{
-	"arm":    "arch.arm",
-	"arm64":  "arch.arm64",
-	"mips":   "arch.mips",
-	"mips64": "arch.mips64",
-	"x86":    "arch.x86",
-	"x86_64": "arch.x86_64",
-	"32":     "multilib.lib32",
-	"64":     "multilib.lib64",
+// Shorter suffixes of other suffixes must be at the end of the list
+var propertyPrefixes = []struct{ mk, bp string }{
+	{"arm", "arch.arm"},
+	{"arm64", "arch.arm64"},
+	{"mips", "arch.mips"},
+	{"mips64", "arch.mips64"},
+	{"x86", "arch.x86"},
+	{"x86_64", "arch.x86_64"},
+	{"32", "multilib.lib32"},
+	// 64 must be after x86_64
+	{"64", "multilib.lib64"},
 }
 
 var conditionalTranslations = map[string]map[bool]string{
diff --git a/androidmk/cmd/androidmk/androidmk.go b/androidmk/cmd/androidmk/androidmk.go
index 4dc4d72..c6e13cc 100644
--- a/androidmk/cmd/androidmk/androidmk.go
+++ b/androidmk/cmd/androidmk/androidmk.go
@@ -195,10 +195,10 @@
 	prefix := ""
 
 	if strings.HasPrefix(name, "LOCAL_") {
-		for k, v := range propertyPrefixes {
-			if strings.HasSuffix(name, "_"+k) {
-				name = strings.TrimSuffix(name, "_"+k)
-				prefix = v
+		for _, x := range propertyPrefixes {
+			if strings.HasSuffix(name, "_"+x.mk) {
+				name = strings.TrimSuffix(name, "_"+x.mk)
+				prefix = x.bp
 				break
 			}
 		}