Merge "Rename ART dump-oat rules."
diff --git a/Android.bp b/Android.bp
index 78ec9d8..9c2bb43 100644
--- a/Android.bp
+++ b/Android.bp
@@ -143,8 +143,6 @@
"cc/config/arm_device.go",
"cc/config/arm64_device.go",
"cc/config/arm64_fuchsia_device.go",
- "cc/config/mips_device.go",
- "cc/config/mips64_device.go",
"cc/config/x86_device.go",
"cc/config/x86_64_device.go",
"cc/config/x86_64_fuchsia_device.go",
diff --git a/android/apex.go b/android/apex.go
index eb79123..eabe059 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -21,13 +21,14 @@
"sync"
)
+const (
+ SdkVersion_Android10 = 29
+)
+
type ApexInfo struct {
// Name of the apex variant that this module is mutated into
ApexName string
- // Whether this apex variant needs to target Android 10
- LegacyAndroid10Support bool
-
MinSdkVersion int
}
@@ -207,7 +208,7 @@
}
func (m *ApexModuleBase) ShouldSupportAndroid10() bool {
- return !m.IsForPlatform() && (m.ApexProperties.Info.MinSdkVersion <= 29 || m.ApexProperties.Info.LegacyAndroid10Support)
+ return !m.IsForPlatform() && (m.ApexProperties.Info.MinSdkVersion <= SdkVersion_Android10)
}
func (m *ApexModuleBase) checkApexAvailableProperty(mctx BaseModuleContext) {
diff --git a/android/arch.go b/android/arch.go
index e440486..08c0256 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -33,8 +33,6 @@
Arm = newArch("arm", "lib32")
Arm64 = newArch("arm64", "lib64")
- Mips = newArch("mips", "lib32")
- Mips64 = newArch("mips64", "lib64")
X86 = newArch("x86", "lib32")
X86_64 = newArch("x86_64", "lib64")
@@ -46,8 +44,6 @@
var archTypeMap = map[string]ArchType{
"arm": Arm,
"arm64": Arm64,
- "mips": Mips,
- "mips64": Mips64,
"x86": X86,
"x86_64": X86_64,
}
@@ -64,12 +60,6 @@
arm64: {
// Host or device variants with arm64 architecture
},
- mips: {
- // Host or device variants with mips architecture
- },
- mips64: {
- // Host or device variants with mips64 architecture
- },
x86: {
// Host or device variants with x86 architecture
},
@@ -145,18 +135,6 @@
"exynos-m1",
"exynos-m2",
},
- Mips: {
- "mips32_fp",
- "mips32r2_fp",
- "mips32r2_fp_xburst",
- "mips32r2dsp_fp",
- "mips32r2dspr2_fp",
- "mips32r6",
- },
- Mips64: {
- "mips64r2",
- "mips64r6",
- },
X86: {
"amberlake",
"atom",
@@ -193,15 +171,6 @@
Arm: {
"neon",
},
- Mips: {
- "dspr2",
- "rev6",
- "msa",
- },
- Mips64: {
- "rev6",
- "msa",
- },
X86: {
"ssse3",
"sse4",
@@ -239,19 +208,6 @@
"neon",
},
},
- Mips: {
- "mips32r2dspr2_fp": {
- "dspr2",
- },
- "mips32r6": {
- "rev6",
- },
- },
- Mips64: {
- "mips64r6": {
- "rev6",
- },
- },
X86: {
"amberlake": {
"ssse3",
@@ -616,7 +572,7 @@
LinuxBionic: []ArchType{X86_64},
Darwin: []ArchType{X86_64},
Windows: []ArchType{X86, X86_64},
- Android: []ArchType{Arm, Arm64, Mips, Mips64, X86, X86_64},
+ Android: []ArchType{Arm, Arm64, X86, X86_64},
Fuchsia: []ArchType{Arm64, X86_64},
}
)
@@ -1656,15 +1612,6 @@
{"arm64", "armv8-2a", "cortex-a75", []string{"arm64-v8a"}},
{"arm64", "armv8-2a", "cortex-a76", []string{"arm64-v8a"}},
{"arm64", "armv8-2a", "kryo385", []string{"arm64-v8a"}},
- {"mips", "mips32-fp", "", []string{"mips"}},
- {"mips", "mips32r2-fp", "", []string{"mips"}},
- {"mips", "mips32r2-fp-xburst", "", []string{"mips"}},
- //{"mips", "mips32r6", "", []string{"mips"}},
- {"mips", "mips32r2dsp-fp", "", []string{"mips"}},
- {"mips", "mips32r2dspr2-fp", "", []string{"mips"}},
- // mips64r2 is mismatching 64r2 and 64r6 libraries during linking to libgcc
- //{"mips64", "mips64r2", "", []string{"mips64"}},
- {"mips64", "mips64r6", "", []string{"mips64"}},
{"x86", "", "", []string{"x86"}},
{"x86", "atom", "", []string{"x86"}},
{"x86", "haswell", "", []string{"x86"}},
diff --git a/android/config.go b/android/config.go
index 9b1297c..bbbe3c8 100644
--- a/android/config.go
+++ b/android/config.go
@@ -863,16 +863,7 @@
}
func (c *config) LibartImgDeviceBaseAddress() string {
- archType := Common
- if len(c.Targets[Android]) > 0 {
- archType = c.Targets[Android][0].Arch.ArchType
- }
- switch archType {
- default:
- return "0x70000000"
- case Mips, Mips64:
- return "0x5C000000"
- }
+ return "0x70000000"
}
func (c *config) ArtUseReadBarrier() bool {
diff --git a/android/prebuilt.go b/android/prebuilt.go
index 2d16f65..c902ec8 100644
--- a/android/prebuilt.go
+++ b/android/prebuilt.go
@@ -50,12 +50,9 @@
type Prebuilt struct {
properties PrebuiltProperties
- module Module
- srcs *[]string
- // Metadata for single source Prebuilt modules.
- srcProps reflect.Value
- srcField reflect.StructField
+ srcsSupplier PrebuiltSrcsSupplier
+ srcsPropertyName string
}
func (p *Prebuilt) Name(name string) string {
@@ -72,31 +69,26 @@
// preference configs. We'll want to add native support for dynamic source cases if we end up having
// more modules like this.
func (p *Prebuilt) SingleSourcePath(ctx ModuleContext) Path {
- if p.srcs != nil {
- if len(*p.srcs) == 0 {
- ctx.PropertyErrorf("srcs", "missing prebuilt source file")
+ if p.srcsSupplier != nil {
+ srcs := p.srcsSupplier()
+
+ if len(srcs) == 0 {
+ ctx.PropertyErrorf(p.srcsPropertyName, "missing prebuilt source file")
return nil
}
- if len(*p.srcs) > 1 {
- ctx.PropertyErrorf("srcs", "multiple prebuilt source files")
+ if len(srcs) > 1 {
+ ctx.PropertyErrorf(p.srcsPropertyName, "multiple prebuilt source files")
return nil
}
// Return the singleton source after expanding any filegroup in the
// sources.
- return PathForModuleSrc(ctx, (*p.srcs)[0])
- } else {
- if !p.srcProps.IsValid() {
- ctx.ModuleErrorf("prebuilt source was not set")
- }
- src := p.getSingleSourceFieldValue()
- if src == "" {
- ctx.PropertyErrorf(proptools.FieldNameForProperty(p.srcField.Name),
- "missing prebuilt source file")
- return nil
- }
+ src := srcs[0]
return PathForModuleSrc(ctx, src)
+ } else {
+ ctx.ModuleErrorf("prebuilt source was not set")
+ return nil
}
}
@@ -104,18 +96,80 @@
return p.properties.UsePrebuilt
}
-func InitPrebuiltModule(module PrebuiltInterface, srcs *[]string) {
+// Called to provide the srcs value for the prebuilt module.
+//
+// Return the src value or nil if it is not available.
+type PrebuiltSrcsSupplier func() []string
+
+// Initialize the module as a prebuilt module that uses the provided supplier to access the
+// prebuilt sources of the module.
+//
+// The supplier will be called multiple times and must return the same values each time it
+// is called. If it returns an empty array (or nil) then the prebuilt module will not be used
+// as a replacement for a source module with the same name even if prefer = true.
+//
+// If the Prebuilt.SingleSourcePath() is called on the module then this must return an array
+// containing exactly one source file.
+//
+// The provided property name is used to provide helpful error messages in the event that
+// a problem arises, e.g. calling SingleSourcePath() when more than one source is provided.
+func InitPrebuiltModuleWithSrcSupplier(module PrebuiltInterface, srcsSupplier PrebuiltSrcsSupplier, srcsPropertyName string) {
p := module.Prebuilt()
module.AddProperties(&p.properties)
- p.srcs = srcs
+
+ if srcsSupplier == nil {
+ panic(fmt.Errorf("srcsSupplier must not be nil"))
+ }
+ if srcsPropertyName == "" {
+ panic(fmt.Errorf("srcsPropertyName must not be empty"))
+ }
+
+ p.srcsSupplier = srcsSupplier
+ p.srcsPropertyName = srcsPropertyName
+}
+
+func InitPrebuiltModule(module PrebuiltInterface, srcs *[]string) {
+ if srcs == nil {
+ panic(fmt.Errorf("srcs must not be nil"))
+ }
+
+ srcsSupplier := func() []string {
+ return *srcs
+ }
+
+ InitPrebuiltModuleWithSrcSupplier(module, srcsSupplier, "srcs")
}
func InitSingleSourcePrebuiltModule(module PrebuiltInterface, srcProps interface{}, srcField string) {
- p := module.Prebuilt()
- module.AddProperties(&p.properties)
- p.srcProps = reflect.ValueOf(srcProps).Elem()
- p.srcField, _ = p.srcProps.Type().FieldByName(srcField)
- p.checkSingleSourceProperties()
+ srcPropsValue := reflect.ValueOf(srcProps).Elem()
+ srcStructField, _ := srcPropsValue.Type().FieldByName(srcField)
+ if !srcPropsValue.IsValid() || srcStructField.Name == "" {
+ panic(fmt.Errorf("invalid single source prebuilt %+v", module))
+ }
+
+ if srcPropsValue.Kind() != reflect.Struct && srcPropsValue.Kind() != reflect.Interface {
+ panic(fmt.Errorf("invalid single source prebuilt %+v", srcProps))
+ }
+
+ srcFieldIndex := srcStructField.Index
+ srcPropertyName := proptools.PropertyNameForField(srcField)
+
+ srcsSupplier := func() []string {
+ value := srcPropsValue.FieldByIndex(srcFieldIndex)
+ if value.Kind() == reflect.Ptr {
+ value = value.Elem()
+ }
+ if value.Kind() != reflect.String {
+ panic(fmt.Errorf("prebuilt src field %q should be a string or a pointer to one but was %d %q", srcPropertyName, value.Kind(), value))
+ }
+ src := value.String()
+ if src == "" {
+ return nil
+ }
+ return []string{src}
+ }
+
+ InitPrebuiltModuleWithSrcSupplier(module, srcsSupplier, srcPropertyName)
}
type PrebuiltInterface interface {
@@ -152,7 +206,7 @@
func PrebuiltSelectModuleMutator(ctx TopDownMutatorContext) {
if m, ok := ctx.Module().(PrebuiltInterface); ok && m.Prebuilt() != nil {
p := m.Prebuilt()
- if p.srcs == nil && !p.srcProps.IsValid() {
+ if p.srcsSupplier == nil {
panic(fmt.Errorf("prebuilt module did not have InitPrebuiltModule called on it"))
}
if !p.properties.SourceExists {
@@ -191,11 +245,7 @@
// usePrebuilt returns true if a prebuilt should be used instead of the source module. The prebuilt
// will be used if it is marked "prefer" or if the source module is disabled.
func (p *Prebuilt) usePrebuilt(ctx TopDownMutatorContext, source Module) bool {
- if p.srcs != nil && len(*p.srcs) == 0 {
- return false
- }
-
- if p.srcProps.IsValid() && p.getSingleSourceFieldValue() == "" {
+ if p.srcsSupplier != nil && len(p.srcsSupplier()) == 0 {
return false
}
@@ -210,24 +260,3 @@
func (p *Prebuilt) SourceExists() bool {
return p.properties.SourceExists
}
-
-func (p *Prebuilt) checkSingleSourceProperties() {
- if !p.srcProps.IsValid() || p.srcField.Name == "" {
- panic(fmt.Errorf("invalid single source prebuilt %+v", p))
- }
-
- if p.srcProps.Kind() != reflect.Struct && p.srcProps.Kind() != reflect.Interface {
- panic(fmt.Errorf("invalid single source prebuilt %+v", p.srcProps))
- }
-}
-
-func (p *Prebuilt) getSingleSourceFieldValue() string {
- value := p.srcProps.FieldByIndex(p.srcField.Index)
- if value.Kind() == reflect.Ptr {
- value = value.Elem()
- }
- if value.Kind() != reflect.String {
- panic(fmt.Errorf("prebuilt src field %q should be a string or a pointer to one", p.srcField.Name))
- }
- return value.String()
-}
diff --git a/android/sdk.go b/android/sdk.go
index 32d9921..5c7b329 100644
--- a/android/sdk.go
+++ b/android/sdk.go
@@ -356,15 +356,8 @@
// structure and calls AddToPropertySet(...) on the properties struct to add the member
// specific properties in the correct place in the structure.
//
- // * Finally, the FinalizeModule(...) method is called to add any additional properties.
- // This was created to allow the property ordering in existing tests to be maintained so
- // as to avoid having to change tests while refactoring.
- //
AddPrebuiltModule(sdkModuleContext ModuleContext, builder SnapshotBuilder, member SdkMember) BpModule
- // Add any additional properties to the end of the module.
- FinalizeModule(sdkModuleContext ModuleContext, builder SnapshotBuilder, member SdkMember, bpModule BpModule)
-
// Create a structure into which variant specific properties can be added.
CreateVariantPropertiesStruct() SdkMemberProperties
}
@@ -397,10 +390,6 @@
return nil
}
-func (b *SdkMemberTypeBase) FinalizeModule(sdkModuleContext ModuleContext, builder SnapshotBuilder, member SdkMember, module BpModule) {
- // Do nothing by default
-}
-
func (b *SdkMemberTypeBase) CreateVariantPropertiesStruct() SdkMemberProperties {
panic("override me")
}
diff --git a/androidmk/androidmk/android.go b/androidmk/androidmk/android.go
index b7c54b1..f863f8d 100644
--- a/androidmk/androidmk/android.go
+++ b/androidmk/androidmk/android.go
@@ -829,8 +829,6 @@
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"},
diff --git a/apex/apex.go b/apex/apex.go
index cddd72b..46aaa8b 100644
--- a/apex/apex.go
+++ b/apex/apex.go
@@ -126,7 +126,6 @@
"libpcre2",
"libprocessgroup_headers",
"libqemu_pipe",
- "libselinux",
"libsystem_headers",
"libutils_headers",
}
@@ -524,7 +523,6 @@
"libprocessgroup",
"libprocessgroup_headers",
"libprocinfo",
- "libselinux",
"libsonivox",
"libspeexresampler",
"libspeexresampler",
@@ -1059,11 +1057,9 @@
var apexBundles []android.ApexInfo
var directDep bool
if a, ok := mctx.Module().(*apexBundle); ok && !a.vndkApex {
- minSdkVersion := a.minSdkVersion(mctx)
apexBundles = []android.ApexInfo{android.ApexInfo{
- ApexName: mctx.ModuleName(),
- LegacyAndroid10Support: proptools.Bool(a.properties.Legacy_android10_support),
- MinSdkVersion: minSdkVersion,
+ ApexName: mctx.ModuleName(),
+ MinSdkVersion: a.minSdkVersion(mctx),
}}
directDep = true
} else if am, ok := mctx.Module().(android.ApexModule); ok {
@@ -1307,10 +1303,6 @@
// Should be only used in tests#.
Test_only_no_hashtree *bool
- // Whether this APEX should support Android10. Default is false. If this is set true, then apex_manifest.json is bundled as well
- // because Android10 requires legacy apex_manifest.json instead of apex_manifest.pb
- Legacy_android10_support *bool
-
IsCoverageVariant bool `blueprint:"mutated"`
// Whether this APEX is considered updatable or not. When set to true, this will enforce additional
@@ -1359,6 +1351,10 @@
// Logging Parent value
Logging_parent string
+
+ // Apex Container Package Name.
+ // Override value for attribute package:name in AndroidManifest.xml
+ Package_name string
}
type apexPackaging int
diff --git a/apex/apex_test.go b/apex/apex_test.go
index ad91878..babc27b 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -3664,6 +3664,7 @@
apps: ["override_app"],
overrides: ["unknownapex"],
logging_parent: "com.foo.bar",
+ package_name: "test.overridden.package",
}
apex_key {
@@ -3715,7 +3716,7 @@
}
optFlags := apexRule.Args["opt_flags"]
- ensureContains(t, optFlags, "--override_apk_package_name com.android.myapex")
+ ensureContains(t, optFlags, "--override_apk_package_name test.overridden.package")
data := android.AndroidMkDataForTest(t, config, "", apexBundle)
var builder strings.Builder
@@ -3737,7 +3738,7 @@
name: "myapex",
key: "myapex.key",
native_shared_libs: ["mylib"],
- legacy_android10_support: true,
+ min_sdk_version: "29",
}
apex_key {
diff --git a/apex/builder.go b/apex/builder.go
index 464d843..40adfca 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -20,6 +20,7 @@
"path/filepath"
"runtime"
"sort"
+ "strconv"
"strings"
"android/soong/android"
@@ -139,6 +140,7 @@
apexBundleRule = pctx.StaticRule("apexBundleRule", blueprint.RuleParams{
Command: `${zip2zip} -i $in -o $out.base ` +
`apex_payload.img:apex/${abi}.img ` +
+ `apex_build_info.pb:apex/${abi}.build_info.pb ` +
`apex_manifest.json:root/apex_manifest.json ` +
`apex_manifest.pb:root/apex_manifest.pb ` +
`AndroidManifest.xml:manifest/AndroidManifest.xml ` +
@@ -205,7 +207,7 @@
},
})
- if proptools.Bool(a.properties.Legacy_android10_support) {
+ if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
// b/143654022 Q apexd can't understand newly added keys in apex_manifest.json
// prepare stripped-down version so that APEX modules built from R+ can be installed to Q
a.manifestJsonOut = android.PathForModuleOut(ctx, "apex_manifest.json")
@@ -354,7 +356,7 @@
var emitCommands []string
imageContentFile := android.PathForModuleOut(ctx, "content.txt")
emitCommands = append(emitCommands, "echo ./apex_manifest.pb >> "+imageContentFile.String())
- if proptools.Bool(a.properties.Legacy_android10_support) {
+ if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
emitCommands = append(emitCommands, "echo ./apex_manifest.json >> "+imageContentFile.String())
}
for _, fi := range a.filesInfo {
@@ -453,10 +455,9 @@
targetSdkVersion := ctx.Config().DefaultAppTargetSdk()
minSdkVersion := ctx.Config().DefaultAppTargetSdk()
- // TODO: this should be based on min_sdk_version property of an APEX.
- if proptools.Bool(a.properties.Legacy_android10_support) {
- targetSdkVersion = "29"
- minSdkVersion = "29"
+ if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
+ minSdkVersion = strconv.Itoa(a.minSdkVersion(ctx))
+ targetSdkVersion = strconv.Itoa(a.minSdkVersion(ctx))
}
if java.UseApiFingerprint(ctx) {
@@ -485,7 +486,7 @@
ctx.PropertyErrorf("test_only_no_hashtree", "not available")
return
}
- if !proptools.Bool(a.properties.Legacy_android10_support) || a.testOnlyShouldSkipHashtreeGeneration() {
+ if a.minSdkVersion(ctx) > android.SdkVersion_Android10 || a.testOnlyShouldSkipHashtreeGeneration() {
// Apexes which are supposed to be installed in builtin dirs(/system, etc)
// don't need hashtree for activation. Therefore, by removing hashtree from
// apex bundle (filesystem image in it, to be specific), we can save storage.
@@ -498,7 +499,7 @@
optFlags = append(optFlags, "--do_not_check_keyname")
}
- if proptools.Bool(a.properties.Legacy_android10_support) {
+ if a.minSdkVersion(ctx) == android.SdkVersion_Android10 {
implicitInputs = append(implicitInputs, a.manifestJsonOut)
optFlags = append(optFlags, "--manifest_json "+a.manifestJsonOut.String())
}
@@ -657,6 +658,9 @@
}
return ""
}
+ if a.overridableProperties.Package_name != "" {
+ return a.overridableProperties.Package_name
+ }
manifestPackageName, overridden := ctx.DeviceConfig().OverrideManifestPackageNameFor(ctx.ModuleName())
if overridden {
return manifestPackageName
diff --git a/cc/config/clang.go b/cc/config/clang.go
index d849906..274ccd5 100644
--- a/cc/config/clang.go
+++ b/cc/config/clang.go
@@ -49,7 +49,7 @@
"-Wunused-but-set-variable",
"-fdiagnostics-color",
- // arm + arm64 + mips + mips64
+ // arm + arm64
"-fgcse-after-reload",
"-frerun-cse-after-loop",
"-frename-registers",
@@ -68,11 +68,6 @@
"-fno-tree-copy-prop",
"-fno-tree-loop-optimize",
- // mips + mips64
- "-msynci",
- "-mno-synci",
- "-mno-fused-madd",
-
// x86 + x86_64
"-finline-limit=300",
"-fno-inline-functions-called-once",
diff --git a/cc/config/mips64_device.go b/cc/config/mips64_device.go
deleted file mode 100644
index c2af951..0000000
--- a/cc/config/mips64_device.go
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2015 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package config
-
-import (
- "strings"
-
- "android/soong/android"
-)
-
-var (
- mips64Cflags = []string{
- "-Umips",
-
- // Help catch common 32/64-bit errors.
- "-Werror=implicit-function-declaration",
- }
-
- mips64ClangCflags = append(mips64Cflags, []string{
- "-fintegrated-as",
- }...)
-
- mips64Cppflags = []string{}
-
- mips64Ldflags = []string{
- "-Wl,--allow-shlib-undefined",
- }
-
- mips64ArchVariantCflags = map[string][]string{
- "mips64r2": []string{
- "-mips64r2",
- "-msynci",
- },
- "mips64r6": []string{
- "-mips64r6",
- "-msynci",
- },
- }
-)
-
-const (
- mips64GccVersion = "4.9"
-)
-
-func init() {
- pctx.StaticVariable("mips64GccVersion", mips64GccVersion)
-
- pctx.SourcePathVariable("Mips64GccRoot",
- "prebuilts/gcc/${HostPrebuiltTag}/mips/mips64el-linux-android-${mips64GccVersion}")
-
- pctx.StaticVariable("Mips64IncludeFlags", bionicHeaders("mips"))
-
- // Clang cflags
- pctx.StaticVariable("Mips64ClangCflags", strings.Join(ClangFilterUnknownCflags(mips64ClangCflags), " "))
- pctx.StaticVariable("Mips64ClangLdflags", strings.Join(ClangFilterUnknownCflags(mips64Ldflags), " "))
- pctx.StaticVariable("Mips64ClangCppflags", strings.Join(ClangFilterUnknownCflags(mips64Cppflags), " "))
-
- // Extended cflags
-
- // Architecture variant cflags
- for variant, cflags := range mips64ArchVariantCflags {
- pctx.StaticVariable("Mips64"+variant+"VariantClangCflags",
- strings.Join(ClangFilterUnknownCflags(cflags), " "))
- }
-}
-
-type toolchainMips64 struct {
- toolchain64Bit
- clangCflags string
- toolchainClangCflags string
-}
-
-func (t *toolchainMips64) Name() string {
- return "mips64"
-}
-
-func (t *toolchainMips64) GccRoot() string {
- return "${config.Mips64GccRoot}"
-}
-
-func (t *toolchainMips64) GccTriple() string {
- return "mips64el-linux-android"
-}
-
-func (t *toolchainMips64) GccVersion() string {
- return mips64GccVersion
-}
-
-func (t *toolchainMips64) IncludeFlags() string {
- return "${config.Mips64IncludeFlags}"
-}
-
-func (t *toolchainMips64) ClangTriple() string {
- return t.GccTriple()
-}
-
-func (t *toolchainMips64) ToolchainClangCflags() string {
- return t.toolchainClangCflags
-}
-
-func (t *toolchainMips64) ClangAsflags() string {
- return "-fno-integrated-as"
-}
-
-func (t *toolchainMips64) ClangCflags() string {
- return t.clangCflags
-}
-
-func (t *toolchainMips64) ClangCppflags() string {
- return "${config.Mips64ClangCppflags}"
-}
-
-func (t *toolchainMips64) ClangLdflags() string {
- return "${config.Mips64ClangLdflags}"
-}
-
-func (t *toolchainMips64) ClangLldflags() string {
- // TODO: define and use Mips64ClangLldflags
- return "${config.Mips64ClangLdflags}"
-}
-
-func (toolchainMips64) LibclangRuntimeLibraryArch() string {
- return "mips64"
-}
-
-func mips64ToolchainFactory(arch android.Arch) Toolchain {
- return &toolchainMips64{
- clangCflags: "${config.Mips64ClangCflags}",
- toolchainClangCflags: "${config.Mips64" + arch.ArchVariant + "VariantClangCflags}",
- }
-}
-
-func init() {
- registerToolchainFactory(android.Android, android.Mips64, mips64ToolchainFactory)
-}
diff --git a/cc/config/mips_device.go b/cc/config/mips_device.go
deleted file mode 100644
index ddbc41b..0000000
--- a/cc/config/mips_device.go
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2015 Google Inc. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package config
-
-import (
- "strings"
-
- "android/soong/android"
-)
-
-var (
- mipsCflags = []string{
- "-fomit-frame-pointer",
- "-Umips",
- }
-
- mipsClangCflags = append(mipsCflags, []string{
- "-fPIC",
- "-fintegrated-as",
- }...)
-
- mipsCppflags = []string{}
-
- mipsLdflags = []string{
- "-Wl,--allow-shlib-undefined",
- }
-
- mipsToolchainLdflags = []string{
- "-Wl,-melf32ltsmip",
- }
-
- mipsArchVariantCflags = map[string][]string{
- "mips32-fp": []string{
- "-mips32",
- "-mfp32",
- "-modd-spreg",
- "-mno-synci",
- },
- "mips32r2-fp": []string{
- "-mips32r2",
- "-mfp32",
- "-modd-spreg",
- "-msynci",
- },
- "mips32r2-fp-xburst": []string{
- "-mips32r2",
- "-mfp32",
- "-modd-spreg",
- "-mno-fused-madd",
- "-mno-synci",
- },
- "mips32r2dsp-fp": []string{
- "-mips32r2",
- "-mfp32",
- "-modd-spreg",
- "-mdsp",
- "-msynci",
- },
- "mips32r2dspr2-fp": []string{
- "-mips32r2",
- "-mfp32",
- "-modd-spreg",
- "-mdspr2",
- "-msynci",
- },
- "mips32r6": []string{
- "-mips32r6",
- "-mfp64",
- "-mno-odd-spreg",
- "-msynci",
- },
- }
-)
-
-const (
- mipsGccVersion = "4.9"
-)
-
-func init() {
- pctx.StaticVariable("mipsGccVersion", mipsGccVersion)
-
- pctx.SourcePathVariable("MipsGccRoot",
- "prebuilts/gcc/${HostPrebuiltTag}/mips/mips64el-linux-android-${mipsGccVersion}")
-
- pctx.StaticVariable("MipsToolchainLdflags", strings.Join(mipsToolchainLdflags, " "))
- pctx.StaticVariable("MipsIncludeFlags", bionicHeaders("mips"))
-
- // Clang cflags
- pctx.StaticVariable("MipsClangCflags", strings.Join(ClangFilterUnknownCflags(mipsClangCflags), " "))
- pctx.StaticVariable("MipsClangLdflags", strings.Join(ClangFilterUnknownCflags(mipsLdflags), " "))
- pctx.StaticVariable("MipsClangCppflags", strings.Join(ClangFilterUnknownCflags(mipsCppflags), " "))
-
- // Extended cflags
-
- // Architecture variant cflags
- for variant, cflags := range mipsArchVariantCflags {
- pctx.StaticVariable("Mips"+variant+"VariantClangCflags",
- strings.Join(ClangFilterUnknownCflags(cflags), " "))
- }
-}
-
-type toolchainMips struct {
- toolchain32Bit
- clangCflags string
- toolchainClangCflags string
-}
-
-func (t *toolchainMips) Name() string {
- return "mips"
-}
-
-func (t *toolchainMips) GccRoot() string {
- return "${config.MipsGccRoot}"
-}
-
-func (t *toolchainMips) GccTriple() string {
- return "mips64el-linux-android"
-}
-
-func (t *toolchainMips) GccVersion() string {
- return mipsGccVersion
-}
-
-func (t *toolchainMips) IncludeFlags() string {
- return "${config.MipsIncludeFlags}"
-}
-
-func (t *toolchainMips) ClangTriple() string {
- return "mipsel-linux-android"
-}
-
-func (t *toolchainMips) ToolchainClangLdflags() string {
- return "${config.MipsToolchainLdflags}"
-}
-
-func (t *toolchainMips) ToolchainClangCflags() string {
- return t.toolchainClangCflags
-}
-
-func (t *toolchainMips) ClangAsflags() string {
- return "-fPIC -fno-integrated-as"
-}
-
-func (t *toolchainMips) ClangCflags() string {
- return t.clangCflags
-}
-
-func (t *toolchainMips) ClangCppflags() string {
- return "${config.MipsClangCppflags}"
-}
-
-func (t *toolchainMips) ClangLdflags() string {
- return "${config.MipsClangLdflags}"
-}
-
-func (t *toolchainMips) ClangLldflags() string {
- // TODO: define and use MipsClangLldflags
- return "${config.MipsClangLdflags}"
-}
-
-func (toolchainMips) LibclangRuntimeLibraryArch() string {
- return "mips"
-}
-
-func mipsToolchainFactory(arch android.Arch) Toolchain {
- return &toolchainMips{
- clangCflags: "${config.MipsClangCflags}",
- toolchainClangCflags: "${config.Mips" + arch.ArchVariant + "VariantClangCflags}",
- }
-}
-
-func init() {
- registerToolchainFactory(android.Android, android.Mips, mipsToolchainFactory)
-}
diff --git a/cc/fuzz.go b/cc/fuzz.go
index ee24300..6a9b709 100644
--- a/cc/fuzz.go
+++ b/cc/fuzz.go
@@ -367,8 +367,6 @@
return
}
- s.fuzzTargets[module.Name()] = true
-
hostOrTargetString := "target"
if ccModule.Host() {
hostOrTargetString = "host"
@@ -458,6 +456,17 @@
builder.Build(pctx, ctx, "create-"+fuzzZip.String(),
"Package "+module.Name()+" for "+archString+"-"+hostOrTargetString)
+ // Don't add modules to 'make haiku' that are set to not be exported to the
+ // fuzzing infrastructure.
+ if config := fuzzModule.Properties.Fuzz_config; config != nil {
+ if ccModule.Host() && !BoolDefault(config.Fuzz_on_haiku_host, true) {
+ return
+ } else if !BoolDefault(config.Fuzz_on_haiku_device, true) {
+ return
+ }
+ }
+
+ s.fuzzTargets[module.Name()] = true
archDirs[archOs] = append(archDirs[archOs], fileToZip{fuzzZip, ""})
})
diff --git a/cc/gen_stub_libs.py b/cc/gen_stub_libs.py
index 0de703c..7deb804 100755
--- a/cc/gen_stub_libs.py
+++ b/cc/gen_stub_libs.py
@@ -26,8 +26,6 @@
ALL_ARCHITECTURES = (
'arm',
'arm64',
- 'mips',
- 'mips64',
'x86',
'x86_64',
)
diff --git a/cc/library_sdk_member.go b/cc/library_sdk_member.go
index f1b0975..843ebb0 100644
--- a/cc/library_sdk_member.go
+++ b/cc/library_sdk_member.go
@@ -105,15 +105,12 @@
if sdkVersion != "" {
pbm.AddProperty("sdk_version", sdkVersion)
}
- return pbm
-}
-func (mt *librarySdkMemberType) FinalizeModule(sdkModuleContext android.ModuleContext, builder android.SnapshotBuilder, member android.SdkMember, bpModule android.BpModule) {
- ccModule := (member.Variants()[0]).(*Module)
stl := ccModule.stl.Properties.Stl
if stl != nil {
- bpModule.AddProperty("stl", proptools.String(stl))
+ pbm.AddProperty("stl", proptools.String(stl))
}
+ return pbm
}
func (mt *librarySdkMemberType) CreateVariantPropertiesStruct() android.SdkMemberProperties {
diff --git a/cc/linker.go b/cc/linker.go
index aa2d0ab..ae5ee0a 100644
--- a/cc/linker.go
+++ b/cc/linker.go
@@ -438,11 +438,10 @@
}
}
- if ctx.useSdk() && (ctx.Arch().ArchType != android.Mips && ctx.Arch().ArchType != android.Mips64) {
+ if ctx.useSdk() {
// The bionic linker now has support gnu style hashes (which are much faster!), but shipping
// to older devices requires the old style hash. Fortunately, we can build with both and
// it'll work anywhere.
- // This is not currently supported on MIPS architectures.
flags.Global.LdFlags = append(flags.Global.LdFlags, "-Wl,--hash-style=both")
}
diff --git a/cc/ndk_headers.go b/cc/ndk_headers.go
index 5744bb2..60f931d 100644
--- a/cc/ndk_headers.go
+++ b/cc/ndk_headers.go
@@ -17,7 +17,6 @@
import (
"fmt"
"path/filepath"
- "strings"
"github.com/google/blueprint"
@@ -131,14 +130,6 @@
m.licensePath = android.PathForModuleSrc(ctx, String(m.properties.License))
- // When generating NDK prebuilts, skip installing MIPS headers,
- // but keep them when doing regular platform build.
- // Ndk_abis property is only set to true with build/soong/scripts/build-ndk-prebuilts.sh
- // TODO: Revert this once MIPS is supported in NDK again.
- if ctx.Config().NdkAbis() && strings.Contains(ctx.ModuleName(), "mips") {
- return
- }
-
srcFiles := android.PathsForModuleSrcExcludes(ctx, m.properties.Srcs, m.properties.Exclude_srcs)
for _, header := range srcFiles {
installDir := getHeaderInstallDir(ctx, header, String(m.properties.From),
diff --git a/cc/ndk_library.go b/cc/ndk_library.go
index 00338b9..2a86d33 100644
--- a/cc/ndk_library.go
+++ b/cc/ndk_library.go
@@ -133,8 +133,6 @@
firstArchVersions := map[android.ArchType]int{
android.Arm: minVersion,
android.Arm64: 21,
- android.Mips: minVersion,
- android.Mips64: 21,
android.X86: minVersion,
android.X86_64: 21,
}
diff --git a/cc/prebuilt.go b/cc/prebuilt.go
index 2c18ac3..7f21721 100644
--- a/cc/prebuilt.go
+++ b/cc/prebuilt.go
@@ -23,6 +23,7 @@
}
func RegisterPrebuiltBuildComponents(ctx android.RegistrationContext) {
+ ctx.RegisterModuleType("cc_prebuilt_library", PrebuiltLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_library_shared", PrebuiltSharedLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_library_static", PrebuiltStaticLibraryFactory)
ctx.RegisterModuleType("cc_prebuilt_binary", prebuiltBinaryFactory)
@@ -96,10 +97,16 @@
p.libraryDecorator.addExportedGeneratedHeaders(deps.ReexportedGeneratedHeaders...)
// TODO(ccross): verify shared library dependencies
- if len(p.properties.Srcs) > 0 {
+ srcs := p.prebuiltSrcs()
+ if len(srcs) > 0 {
builderFlags := flagsToBuilderFlags(flags)
- in := p.Prebuilt.SingleSourcePath(ctx)
+ if len(srcs) > 1 {
+ ctx.PropertyErrorf("srcs", "multiple prebuilt source files")
+ return nil
+ }
+
+ in := android.PathForModuleSrc(ctx, srcs[0])
if p.shared() {
p.unstrippedOutputFile = in
@@ -123,6 +130,18 @@
return nil
}
+func (p *prebuiltLibraryLinker) prebuiltSrcs() []string {
+ srcs := p.properties.Srcs
+ if p.static() {
+ srcs = append(srcs, p.libraryDecorator.StaticProperties.Static.Srcs...)
+ }
+ if p.shared() {
+ srcs = append(srcs, p.libraryDecorator.SharedProperties.Shared.Srcs...)
+ }
+
+ return srcs
+}
+
func (p *prebuiltLibraryLinker) shared() bool {
return p.libraryDecorator.shared()
}
@@ -146,13 +165,28 @@
module.AddProperties(&prebuilt.properties)
- android.InitPrebuiltModule(module, &prebuilt.properties.Srcs)
+ srcsSupplier := func() []string {
+ return prebuilt.prebuiltSrcs()
+ }
+
+ android.InitPrebuiltModuleWithSrcSupplier(module, srcsSupplier, "srcs")
// Prebuilt libraries can be used in SDKs.
android.InitSdkAwareModule(module)
return module, library
}
+// cc_prebuilt_library installs a precompiled shared library that are
+// listed in the srcs property in the device's directory.
+func PrebuiltLibraryFactory() android.Module {
+ module, _ := NewPrebuiltLibrary(android.HostAndDeviceSupported)
+
+ // Prebuilt shared libraries can be included in APEXes
+ android.InitApexModule(module)
+
+ return module.Init()
+}
+
// cc_prebuilt_library_shared installs a precompiled shared library that are
// listed in the srcs property in the device's directory.
func PrebuiltSharedLibraryFactory() android.Module {
diff --git a/cc/prebuilt_test.go b/cc/prebuilt_test.go
index 3d809fc..0eca97f 100644
--- a/cc/prebuilt_test.go
+++ b/cc/prebuilt_test.go
@@ -59,36 +59,38 @@
name: "libe",
srcs: ["libe.a"],
}
+
+ cc_library {
+ name: "libf",
+ }
+
+ cc_prebuilt_library {
+ name: "libf",
+ static: {
+ srcs: ["libf.a"],
+ },
+ shared: {
+ srcs: ["libf.so"],
+ },
+ }
`
- fs := map[string][]byte{
- "liba.so": nil,
- "libb.a": nil,
- "libd.so": nil,
- "libe.a": nil,
- }
-
- config := TestConfig(buildDir, android.Android, nil, bp, fs)
-
- ctx := CreateTestContext()
-
- ctx.Register(config)
-
- _, errs := ctx.ParseFileList(".", []string{"Android.bp"})
- android.FailIfErrored(t, errs)
- _, errs = ctx.PrepareBuildActions(config)
- android.FailIfErrored(t, errs)
+ ctx := testPrebuilt(t, bp)
// Verify that all the modules exist and that their dependencies were connected correctly
liba := ctx.ModuleForTests("liba", "android_arm64_armv8-a_shared").Module()
libb := ctx.ModuleForTests("libb", "android_arm64_armv8-a_static").Module()
libd := ctx.ModuleForTests("libd", "android_arm64_armv8-a_shared").Module()
libe := ctx.ModuleForTests("libe", "android_arm64_armv8-a_static").Module()
+ libfStatic := ctx.ModuleForTests("libf", "android_arm64_armv8-a_static").Module()
+ libfShared := ctx.ModuleForTests("libf", "android_arm64_armv8-a_shared").Module()
prebuiltLiba := ctx.ModuleForTests("prebuilt_liba", "android_arm64_armv8-a_shared").Module()
prebuiltLibb := ctx.ModuleForTests("prebuilt_libb", "android_arm64_armv8-a_static").Module()
prebuiltLibd := ctx.ModuleForTests("prebuilt_libd", "android_arm64_armv8-a_shared").Module()
prebuiltLibe := ctx.ModuleForTests("prebuilt_libe", "android_arm64_armv8-a_static").Module()
+ prebuiltLibfStatic := ctx.ModuleForTests("prebuilt_libf", "android_arm64_armv8-a_static").Module()
+ prebuiltLibfShared := ctx.ModuleForTests("prebuilt_libf", "android_arm64_armv8-a_shared").Module()
hasDep := func(m android.Module, wantDep android.Module) bool {
t.Helper()
@@ -116,4 +118,89 @@
if !hasDep(libe, prebuiltLibe) {
t.Errorf("libe missing dependency on prebuilt_libe")
}
+
+ if !hasDep(libfStatic, prebuiltLibfStatic) {
+ t.Errorf("libf static missing dependency on prebuilt_libf")
+ }
+
+ if !hasDep(libfShared, prebuiltLibfShared) {
+ t.Errorf("libf shared missing dependency on prebuilt_libf")
+ }
+}
+
+func testPrebuilt(t *testing.T, bp string) *android.TestContext {
+ fs := map[string][]byte{
+ "liba.so": nil,
+ "libb.a": nil,
+ "libd.so": nil,
+ "libe.a": nil,
+ "libf.a": nil,
+ "libf.so": nil,
+ }
+ config := TestConfig(buildDir, android.Android, nil, bp, fs)
+ ctx := CreateTestContext()
+
+ // Enable androidmk support.
+ // * Register the singleton
+ // * Configure that we are inside make
+ // * Add CommonOS to ensure that androidmk processing works.
+ android.RegisterAndroidMkBuildComponents(ctx)
+ android.SetInMakeForTests(config)
+
+ ctx.Register(config)
+ _, errs := ctx.ParseFileList(".", []string{"Android.bp"})
+ android.FailIfErrored(t, errs)
+ _, errs = ctx.PrepareBuildActions(config)
+ android.FailIfErrored(t, errs)
+ return ctx
+}
+
+func TestPrebuiltLibraryShared(t *testing.T) {
+ ctx := testPrebuilt(t, `
+ cc_prebuilt_library_shared {
+ name: "libtest",
+ srcs: ["libf.so"],
+ strip: {
+ none: true,
+ },
+ }
+ `)
+
+ shared := ctx.ModuleForTests("libtest", "android_arm64_armv8-a_shared").Module().(*Module)
+ assertString(t, shared.OutputFile().String(), "libf.so")
+}
+
+func TestPrebuiltLibraryStatic(t *testing.T) {
+ ctx := testPrebuilt(t, `
+ cc_prebuilt_library_static {
+ name: "libtest",
+ srcs: ["libf.a"],
+ }
+ `)
+
+ static := ctx.ModuleForTests("libtest", "android_arm64_armv8-a_static").Module().(*Module)
+ assertString(t, static.OutputFile().String(), "libf.a")
+}
+
+func TestPrebuiltLibrary(t *testing.T) {
+ ctx := testPrebuilt(t, `
+ cc_prebuilt_library {
+ name: "libtest",
+ static: {
+ srcs: ["libf.a"],
+ },
+ shared: {
+ srcs: ["libf.so"],
+ },
+ strip: {
+ none: true,
+ },
+ }
+ `)
+
+ shared := ctx.ModuleForTests("libtest", "android_arm64_armv8-a_shared").Module().(*Module)
+ assertString(t, shared.OutputFile().String(), "libf.so")
+
+ static := ctx.ModuleForTests("libtest", "android_arm64_armv8-a_static").Module().(*Module)
+ assertString(t, static.OutputFile().String(), "libf.a")
}
diff --git a/cc/sanitize.go b/cc/sanitize.go
index f12edc6..d32efda 100644
--- a/cc/sanitize.go
+++ b/cc/sanitize.go
@@ -307,8 +307,8 @@
}
}
- // CFI needs gold linker, and mips toolchain does not have one.
- if !ctx.Config().EnableCFI() || ctx.Arch().ArchType == android.Mips || ctx.Arch().ArchType == android.Mips64 {
+ // Is CFI actually enabled?
+ if !ctx.Config().EnableCFI() {
s.Cfi = nil
s.Diag.Cfi = nil
}
diff --git a/doc.go b/doc.go
index 543c460..299fd2b 100644
--- a/doc.go
+++ b/doc.go
@@ -46,8 +46,8 @@
//
// Target architecture
// The target architecture is the preferred architecture supported by the selected
-// device. It is most commonly 32-bit arm, but may also be 64-bit arm, 32-bit or
-// 64-bit x86, or mips.
+// device. It is most commonly 32-bit arm, but may also be 64-bit arm, 32-bit
+// x86, or 64-bit x86.
//
// Secondary architecture
// The secondary architecture specifies the architecture to compile a second copy
diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go
index 8e621c7..a3b264e 100644
--- a/java/dexpreopt_bootjars.go
+++ b/java/dexpreopt_bootjars.go
@@ -33,8 +33,7 @@
// /system/framework/boot.art and should be the same for all supported
// architectures on the device. The concrete architecture specific
// content actually ends up in a "filename" that contains an
-// architecture specific directory name such as arm, arm64, mips,
-// mips64, x86, x86_64.
+// architecture specific directory name such as arm, arm64, x86, x86_64.
//
// Here are some example values for an x86_64 / x86 configuration:
//
diff --git a/sdk/cc_sdk_test.go b/sdk/cc_sdk_test.go
index 0f84c4c..6f9dc3c 100644
--- a/sdk/cc_sdk_test.go
+++ b/sdk/cc_sdk_test.go
@@ -298,6 +298,7 @@
name: "mysdk_mynativelib@current",
sdk_member_name: "mynativelib",
installable: false,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -308,12 +309,12 @@
srcs: ["arm/lib/mynativelib.so"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
name: "mynativelib",
prefer: false,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -324,7 +325,6 @@
srcs: ["arm/lib/mynativelib.so"],
},
},
- stl: "none",
}
sdk_snapshot {
@@ -541,6 +541,7 @@
"apex2",
],
installable: false,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -552,7 +553,6 @@
export_include_dirs: ["arm/include_gen/mynativelib"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
@@ -562,6 +562,7 @@
"apex1",
"apex2",
],
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -573,7 +574,6 @@
export_include_dirs: ["arm/include_gen/mynativelib"],
},
},
- stl: "none",
}
sdk_snapshot {
@@ -665,6 +665,7 @@
name: "mysdk_mynativelib@current",
sdk_member_name: "mynativelib",
installable: false,
+ stl: "none",
shared_libs: [
"mysdk_myothernativelib@current",
"libc",
@@ -677,12 +678,12 @@
srcs: ["arm/lib/mynativelib.so"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
name: "mynativelib",
prefer: false,
+ stl: "none",
shared_libs: [
"myothernativelib",
"libc",
@@ -695,13 +696,13 @@
srcs: ["arm/lib/mynativelib.so"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
name: "mysdk_myothernativelib@current",
sdk_member_name: "myothernativelib",
installable: false,
+ stl: "none",
system_shared_libs: ["libm"],
arch: {
arm64: {
@@ -711,12 +712,12 @@
srcs: ["arm/lib/myothernativelib.so"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
name: "myothernativelib",
prefer: false,
+ stl: "none",
system_shared_libs: ["libm"],
arch: {
arm64: {
@@ -726,13 +727,13 @@
srcs: ["arm/lib/myothernativelib.so"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
name: "mysdk_mysystemnativelib@current",
sdk_member_name: "mysystemnativelib",
installable: false,
+ stl: "none",
arch: {
arm64: {
srcs: ["arm64/lib/mysystemnativelib.so"],
@@ -741,12 +742,12 @@
srcs: ["arm/lib/mysystemnativelib.so"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
name: "mysystemnativelib",
prefer: false,
+ stl: "none",
arch: {
arm64: {
srcs: ["arm64/lib/mysystemnativelib.so"],
@@ -755,7 +756,6 @@
srcs: ["arm/lib/mysystemnativelib.so"],
},
},
- stl: "none",
}
sdk_snapshot {
@@ -819,6 +819,7 @@
host_supported: true,
installable: false,
sdk_version: "minimum",
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -830,7 +831,6 @@
export_include_dirs: ["x86/include_gen/mynativelib"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
@@ -839,6 +839,7 @@
device_supported: false,
host_supported: true,
sdk_version: "minimum",
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -850,7 +851,6 @@
export_include_dirs: ["x86/include_gen/mynativelib"],
},
},
- stl: "none",
}
sdk_snapshot {
@@ -918,6 +918,7 @@
device_supported: false,
host_supported: true,
installable: false,
+ stl: "none",
target: {
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
@@ -929,7 +930,6 @@
srcs: ["windows/x86_64/lib/mynativelib.dll"],
},
},
- stl: "none",
}
cc_prebuilt_library_shared {
@@ -937,6 +937,7 @@
prefer: false,
device_supported: false,
host_supported: true,
+ stl: "none",
target: {
linux_glibc_x86_64: {
srcs: ["linux_glibc/x86_64/lib/mynativelib.so"],
@@ -948,7 +949,6 @@
srcs: ["windows/x86_64/lib/mynativelib.dll"],
},
},
- stl: "none",
}
sdk_snapshot {
@@ -996,6 +996,7 @@
name: "myexports_mynativelib@current",
sdk_member_name: "mynativelib",
installable: false,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -1007,12 +1008,12 @@
export_include_dirs: ["arm/include_gen/mynativelib"],
},
},
- stl: "none",
}
cc_prebuilt_library_static {
name: "mynativelib",
prefer: false,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
arm64: {
@@ -1024,7 +1025,6 @@
export_include_dirs: ["arm/include_gen/mynativelib"],
},
},
- stl: "none",
}
module_exports_snapshot {
@@ -1085,6 +1085,7 @@
device_supported: false,
host_supported: true,
installable: false,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1096,7 +1097,6 @@
export_include_dirs: ["x86/include_gen/mynativelib"],
},
},
- stl: "none",
}
cc_prebuilt_library_static {
@@ -1104,6 +1104,7 @@
prefer: false,
device_supported: false,
host_supported: true,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1115,7 +1116,6 @@
export_include_dirs: ["x86/include_gen/mynativelib"],
},
},
- stl: "none",
}
module_exports_snapshot {
@@ -1183,6 +1183,7 @@
device_supported: false,
host_supported: true,
installable: false,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1190,7 +1191,6 @@
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
},
- stl: "none",
}
cc_prebuilt_library_static {
@@ -1198,6 +1198,7 @@
prefer: false,
device_supported: false,
host_supported: true,
+ stl: "none",
export_include_dirs: ["include/include"],
arch: {
x86_64: {
@@ -1205,19 +1206,18 @@
export_include_dirs: ["x86_64/include_gen/mynativelib"],
},
},
- stl: "none",
}
module_exports_snapshot {
name: "myexports@current",
device_supported: false,
host_supported: true,
+ native_static_libs: ["myexports_mynativelib@current"],
target: {
host: {
compile_multilib: "64",
},
},
- native_static_libs: ["myexports_mynativelib@current"],
}`),
checkAllCopyRules(`
include/Test.h -> include/include/Test.h
@@ -1251,15 +1251,15 @@
cc_prebuilt_library_headers {
name: "mysdk_mynativeheaders@current",
sdk_member_name: "mynativeheaders",
- export_include_dirs: ["include/include"],
stl: "none",
+ export_include_dirs: ["include/include"],
}
cc_prebuilt_library_headers {
name: "mynativeheaders",
prefer: false,
- export_include_dirs: ["include/include"],
stl: "none",
+ export_include_dirs: ["include/include"],
}
sdk_snapshot {
@@ -1304,8 +1304,8 @@
sdk_member_name: "mynativeheaders",
device_supported: false,
host_supported: true,
- export_include_dirs: ["include/include"],
stl: "none",
+ export_include_dirs: ["include/include"],
}
cc_prebuilt_library_headers {
@@ -1313,8 +1313,8 @@
prefer: false,
device_supported: false,
host_supported: true,
- export_include_dirs: ["include/include"],
stl: "none",
+ export_include_dirs: ["include/include"],
}
sdk_snapshot {
@@ -1366,6 +1366,7 @@
name: "mysdk_mynativeheaders@current",
sdk_member_name: "mynativeheaders",
host_supported: true,
+ stl: "none",
export_system_include_dirs: ["include/include"],
target: {
android: {
@@ -1375,13 +1376,13 @@
export_include_dirs: ["include/include-host"],
},
},
- stl: "none",
}
cc_prebuilt_library_headers {
name: "mynativeheaders",
prefer: false,
host_supported: true,
+ stl: "none",
export_system_include_dirs: ["include/include"],
target: {
android: {
@@ -1391,7 +1392,6 @@
export_include_dirs: ["include/include-host"],
},
},
- stl: "none",
}
sdk_snapshot {
diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go
index c60002b..cbffb50 100644
--- a/sdk/java_sdk_test.go
+++ b/sdk/java_sdk_test.go
@@ -920,6 +920,7 @@
module_exports_snapshot {
name: "myexports@current",
host_supported: true,
+ java_libs: ["myexports_myjavalib@current"],
target: {
android: {
java_header_libs: ["myexports_androidjavalib@current"],
@@ -928,7 +929,6 @@
java_header_libs: ["myexports_hostjavalib@current"],
},
},
- java_libs: ["myexports_myjavalib@current"],
}
`),
checkAllCopyRules(`
diff --git a/sdk/update.go b/sdk/update.go
index 0248a66..779ba1a 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -510,41 +510,53 @@
func outputPropertySet(contents *generatedContents, set *bpPropertySet) {
contents.Indent()
+
+ // Output the properties first, followed by the nested sets. This ensures a
+ // consistent output irrespective of whether property sets are created before
+ // or after the properties. This simplifies the creation of the module.
for _, name := range set.order {
value := set.getValue(name)
- reflectedValue := reflect.ValueOf(value)
- t := reflectedValue.Type()
-
- kind := t.Kind()
- switch kind {
- case reflect.Slice:
- length := reflectedValue.Len()
+ switch v := value.(type) {
+ case []string:
+ length := len(v)
if length > 1 {
contents.Printfln("%s: [", name)
contents.Indent()
for i := 0; i < length; i = i + 1 {
- contents.Printfln("%q,", reflectedValue.Index(i).Interface())
+ contents.Printfln("%q,", v[i])
}
contents.Dedent()
contents.Printfln("],")
} else if length == 0 {
contents.Printfln("%s: [],", name)
} else {
- contents.Printfln("%s: [%q],", name, reflectedValue.Index(0).Interface())
+ contents.Printfln("%s: [%q],", name, v[0])
}
- case reflect.Bool:
- contents.Printfln("%s: %t,", name, reflectedValue.Bool())
- case reflect.Ptr:
- contents.Printfln("%s: {", name)
- outputPropertySet(contents, reflectedValue.Interface().(*bpPropertySet))
- contents.Printfln("},")
+ case bool:
+ contents.Printfln("%s: %t,", name, v)
+
+ case *bpPropertySet:
+ // Do not write property sets in the properties phase.
default:
contents.Printfln("%s: %q,", name, value)
}
}
+
+ for _, name := range set.order {
+ value := set.getValue(name)
+
+ // Only write property sets in the sets phase.
+ switch v := value.(type) {
+ case *bpPropertySet:
+ contents.Printfln("%s: {", name)
+ outputPropertySet(contents, v)
+ contents.Printfln("},")
+ }
+ }
+
contents.Dedent()
}
@@ -971,8 +983,6 @@
}
}
}
-
- memberType.FinalizeModule(sdkModuleContext, builder, member, bpModule)
}
// Compute the list of possible os types that this sdk could support.
diff --git a/ui/build/config.go b/ui/build/config.go
index 5b9d10a..55e0d03 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -611,10 +611,6 @@
product = "aosp_arm"
case "arm64":
product = "aosm_arm64"
- case "mips":
- product = "aosp_mips"
- case "mips64":
- product = "aosp_mips64"
case "x86":
product = "aosp_x86"
case "x86_64":