Add an NDK ABIs mega build configuration.
The NDK needs generic prebuilts for all architectures.
Test: echo '{ "Ndk_abis": true }' > soong.config && \
./soong $OUT_DIR/ndk.timestamp
Bug: None
Change-Id: I2ee3ebbf4cbd1bc593f9e4e9fb44fb66711da9d5
diff --git a/android/arch.go b/android/arch.go
index 61564d8..6c99684 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -799,13 +799,15 @@
return targets, nil
}
-func decodeMegaDevice() ([]Target, error) {
- archSettings := []struct {
- arch string
- archVariant string
- cpuVariant string
- abi []string
- }{
+type archConfig struct {
+ arch string
+ archVariant string
+ cpuVariant string
+ abi []string
+}
+
+func getMegaDeviceConfig() []archConfig {
+ return []archConfig{
// armv5 is only used for unbundled apps
//{"arm", "armv5te", "", []string{"armeabi"}},
{"arm", "armv7-a", "generic", []string{"armeabi-v7a"}},
@@ -846,10 +848,23 @@
{"x86_64", "sandybridge", "", []string{"x86_64"}},
{"x86_64", "silvermont", "", []string{"x86_64"}},
}
+}
+func getNdkAbisConfig() []archConfig {
+ return []archConfig{
+ {"arm", "armv5te", "", []string{"armeabi"}},
+ {"arm64", "armv8-a", "", []string{"arm64-v8a"}},
+ {"mips", "mips32-fp", "", []string{"mips"}},
+ {"mips64", "mips64r6", "", []string{"mips64"}},
+ {"x86", "", "", []string{"x86"}},
+ {"x86_64", "", "", []string{"x86_64"}},
+ }
+}
+
+func decodeArchSettings(archConfigs []archConfig) ([]Target, error) {
var ret []Target
- for _, config := range archSettings {
+ for _, config := range archConfigs {
arch, err := decodeArch(config.arch, &config.archVariant,
&config.cpuVariant, &config.abi)
if err != nil {
diff --git a/android/config.go b/android/config.go
index 483ec91..4d7e8df 100644
--- a/android/config.go
+++ b/android/config.go
@@ -37,6 +37,7 @@
// config file. These will be included in the config struct.
type FileConfigurableOptions struct {
Mega_device *bool `json:",omitempty"`
+ Ndk_abis *bool `json:",omitempty"`
}
func (f *FileConfigurableOptions) SetDefaultConfig() {
@@ -211,8 +212,15 @@
return Config{}, err
}
+ var archConfig []archConfig
if Bool(config.Mega_device) {
- deviceTargets, err := decodeMegaDevice()
+ archConfig = getMegaDeviceConfig()
+ } else if Bool(config.Ndk_abis) {
+ archConfig = getNdkAbisConfig()
+ }
+
+ if archConfig != nil {
+ deviceTargets, err := decodeArchSettings(archConfig)
if err != nil {
return Config{}, err
}