Dynamically generate arch struct
Now we don't need to hardcode the list of OS/Arch/Variant/Features in
android/arch.go.
Change-Id: I0f9cc35d55baa31f036825fdf5b9dd30d076e56e
diff --git a/cc/config/arm64_device.go b/cc/config/arm64_device.go
index 124b124..fe47ddf 100644
--- a/cc/config/arm64_device.go
+++ b/cc/config/arm64_device.go
@@ -89,6 +89,11 @@
)
func init() {
+ android.RegisterArchVariants(android.Arm64,
+ "armv8_a",
+ "cortex_a53",
+ "denver64")
+
pctx.StaticVariable("arm64GccVersion", arm64GccVersion)
pctx.SourcePathVariable("Arm64GccRoot",
diff --git a/cc/config/arm_device.go b/cc/config/arm_device.go
index 85a891a..1b60eae 100644
--- a/cc/config/arm_device.go
+++ b/cc/config/arm_device.go
@@ -145,6 +145,19 @@
)
func init() {
+ android.RegisterArchVariants(android.Arm,
+ "armv5te",
+ "armv7_a",
+ "armv7_a_neon",
+ "cortex_a7",
+ "cortex_a8",
+ "cortex_a9",
+ "cortex_a15",
+ "cortex_a53",
+ "cortex_a53_a57",
+ "krait",
+ "denver")
+
replaceFirst := func(slice []string, from, to string) {
if slice[0] != from {
panic(fmt.Errorf("Expected %q, found %q", from, to))
diff --git a/cc/config/mips64_device.go b/cc/config/mips64_device.go
index 4e8bf1e..8997893 100644
--- a/cc/config/mips64_device.go
+++ b/cc/config/mips64_device.go
@@ -90,7 +90,11 @@
)
func init() {
- android.RegisterArchFeatures(android.Mips64, "mips64r6",
+ android.RegisterArchVariants(android.Mips64,
+ "mips64r2",
+ "mips64r6")
+ android.RegisterArchFeatures(android.Mips64, "rev6")
+ android.RegisterArchVariantFeatures(android.Mips64, "mips64r6",
"rev6")
pctx.StaticVariable("mips64GccVersion", mips64GccVersion)
diff --git a/cc/config/mips_device.go b/cc/config/mips_device.go
index deef10f..f5b14bd 100644
--- a/cc/config/mips_device.go
+++ b/cc/config/mips_device.go
@@ -126,7 +126,15 @@
)
func init() {
- android.RegisterArchFeatures(android.Mips, "mips32r6",
+ android.RegisterArchVariants(android.Mips,
+ "mips32_fp",
+ "mips32r2_fp",
+ "mips32r2_fp_xburst",
+ "mips32r2dsp_fp",
+ "mips32r2dspr2_fp",
+ "mips32r6")
+ android.RegisterArchFeatures(android.Mips, "rev6")
+ android.RegisterArchVariantFeatures(android.Mips, "mips32r6",
"rev6")
pctx.StaticVariable("mipsGccVersion", mipsGccVersion)
diff --git a/cc/config/x86_64_device.go b/cc/config/x86_64_device.go
index 23c976a..918ddf7 100644
--- a/cc/config/x86_64_device.go
+++ b/cc/config/x86_64_device.go
@@ -99,13 +99,12 @@
)
func init() {
- android.RegisterArchFeatures(android.X86_64, "",
- "ssse3",
- "sse4",
- "sse4_1",
- "sse4_2",
- "popcnt")
- android.RegisterArchFeatures(android.X86_64, "haswell",
+ android.RegisterArchVariants(android.X86_64,
+ "haswell",
+ "ivybridge",
+ "sandybridge",
+ "silvermont")
+ android.RegisterArchFeatures(android.X86_64,
"ssse3",
"sse4",
"sse4_1",
@@ -113,7 +112,13 @@
"aes_ni",
"avx",
"popcnt")
- android.RegisterArchFeatures(android.X86_64, "ivybridge",
+ android.RegisterArchVariantFeatures(android.X86_64, "",
+ "ssse3",
+ "sse4",
+ "sse4_1",
+ "sse4_2",
+ "popcnt")
+ android.RegisterArchVariantFeatures(android.X86_64, "haswell",
"ssse3",
"sse4",
"sse4_1",
@@ -121,13 +126,21 @@
"aes_ni",
"avx",
"popcnt")
- android.RegisterArchFeatures(android.X86_64, "sandybridge",
+ android.RegisterArchVariantFeatures(android.X86_64, "ivybridge",
+ "ssse3",
+ "sse4",
+ "sse4_1",
+ "sse4_2",
+ "aes_ni",
+ "avx",
+ "popcnt")
+ android.RegisterArchVariantFeatures(android.X86_64, "sandybridge",
"ssse3",
"sse4",
"sse4_1",
"sse4_2",
"popcnt")
- android.RegisterArchFeatures(android.X86_64, "silvermont",
+ android.RegisterArchVariantFeatures(android.X86_64, "silvermont",
"ssse3",
"sse4",
"sse4_1",
diff --git a/cc/config/x86_device.go b/cc/config/x86_device.go
index 4667caa..6b55564 100644
--- a/cc/config/x86_device.go
+++ b/cc/config/x86_device.go
@@ -113,16 +113,14 @@
)
func init() {
- android.RegisterArchFeatures(android.X86, "x86_64",
- "ssse3",
- "sse4",
- "sse4_1",
- "sse4_2",
- "popcnt")
- android.RegisterArchFeatures(android.X86, "atom",
- "ssse3",
- "movbe")
- android.RegisterArchFeatures(android.X86, "haswell",
+ android.RegisterArchVariants(android.X86,
+ "atom",
+ "haswell",
+ "ivybridge",
+ "sandybridge",
+ "silvermont",
+ "x86_64")
+ android.RegisterArchFeatures(android.X86,
"ssse3",
"sse4",
"sse4_1",
@@ -131,7 +129,25 @@
"avx",
"popcnt",
"movbe")
- android.RegisterArchFeatures(android.X86, "ivybridge",
+ android.RegisterArchVariantFeatures(android.X86, "x86_64",
+ "ssse3",
+ "sse4",
+ "sse4_1",
+ "sse4_2",
+ "popcnt")
+ android.RegisterArchVariantFeatures(android.X86, "atom",
+ "ssse3",
+ "movbe")
+ android.RegisterArchVariantFeatures(android.X86, "haswell",
+ "ssse3",
+ "sse4",
+ "sse4_1",
+ "sse4_2",
+ "aes_ni",
+ "avx",
+ "popcnt",
+ "movbe")
+ android.RegisterArchVariantFeatures(android.X86, "ivybridge",
"ssse3",
"sse4",
"sse4_1",
@@ -139,13 +155,13 @@
"aes_ni",
"avx",
"popcnt")
- android.RegisterArchFeatures(android.X86, "sandybridge",
+ android.RegisterArchVariantFeatures(android.X86, "sandybridge",
"ssse3",
"sse4",
"sse4_1",
"sse4_2",
"popcnt")
- android.RegisterArchFeatures(android.X86, "silvermont",
+ android.RegisterArchVariantFeatures(android.X86, "silvermont",
"ssse3",
"sse4",
"sse4_1",