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
}
}