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
This commit is contained in:
Colin Cross 2016-05-25 17:15:40 -07:00
parent b36ab1a1a0
commit ab6e6e0135
2 changed files with 15 additions and 13 deletions

View file

@ -313,15 +313,17 @@ var deleteProperties = map[string]struct{}{
"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{

View file

@ -195,10 +195,10 @@ func handleAssignment(file *bpFile, assignment mkparser.Assignment, c *condition
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
}
}