Merge "Disable dexpreopt on targets that do not include default ART config."
diff --git a/android/variable.go b/android/variable.go
index 41943b0..abbdf21 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -119,6 +119,10 @@
Flatten_apex struct {
Enabled *bool
}
+
+ Experimental_mte struct {
+ Cflags []string `android:"arch_variant"`
+ } `android:"arch_variant"`
} `android:"arch_variant"`
}
@@ -228,6 +232,8 @@
EnableXOM *bool `json:",omitempty"`
XOMExcludePaths []string `json:",omitempty"`
+ Experimental_mte *bool `json:",omitempty"`
+
VendorPath *string `json:",omitempty"`
OdmPath *string `json:",omitempty"`
ProductPath *string `json:",omitempty"`
diff --git a/cc/cc.go b/cc/cc.go
index a312c49..5dfc563 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -2653,7 +2653,11 @@
// or a /system directory that is available to vendor.
coreVariantNeeded = true
vendorVariants = append(vendorVariants, platformVndkVersion)
- if m.IsVndk() {
+ // VNDK modules must not create BOARD_VNDK_VERSION variant because its
+ // code is PLATFORM_VNDK_VERSION.
+ // On the other hand, vendor_available modules which are not VNDK should
+ // also build BOARD_VNDK_VERSION because it's installed in /vendor.
+ if !m.IsVndk() {
vendorVariants = append(vendorVariants, deviceVndkVersion)
}
} else if vendorSpecific && String(m.Properties.Sdk_version) == "" {
diff --git a/cc/vndk.go b/cc/vndk.go
index f39ee50..d6c2f6f 100644
--- a/cc/vndk.go
+++ b/cc/vndk.go
@@ -194,16 +194,15 @@
}
var (
- vndkCoreLibrariesKey = android.NewOnceKey("vndkCoreLibrarires")
- vndkSpLibrariesKey = android.NewOnceKey("vndkSpLibrarires")
- llndkLibrariesKey = android.NewOnceKey("llndkLibrarires")
- vndkPrivateLibrariesKey = android.NewOnceKey("vndkPrivateLibrarires")
- vndkUsingCoreVariantLibrariesKey = android.NewOnceKey("vndkUsingCoreVariantLibrarires")
- modulePathsKey = android.NewOnceKey("modulePaths")
- vndkSnapshotOutputsKey = android.NewOnceKey("vndkSnapshotOutputs")
- vndkMustUseVendorVariantListKey = android.NewOnceKey("vndkMustUseVendorVariantListKey")
- testVndkMustUseVendorVariantListKey = android.NewOnceKey("testVndkMustUseVendorVariantListKey")
- vndkLibrariesLock sync.Mutex
+ vndkCoreLibrariesKey = android.NewOnceKey("vndkCoreLibrarires")
+ vndkSpLibrariesKey = android.NewOnceKey("vndkSpLibrarires")
+ llndkLibrariesKey = android.NewOnceKey("llndkLibrarires")
+ vndkPrivateLibrariesKey = android.NewOnceKey("vndkPrivateLibrarires")
+ vndkUsingCoreVariantLibrariesKey = android.NewOnceKey("vndkUsingCoreVariantLibrarires")
+ modulePathsKey = android.NewOnceKey("modulePaths")
+ vndkSnapshotOutputsKey = android.NewOnceKey("vndkSnapshotOutputs")
+ vndkMustUseVendorVariantListKey = android.NewOnceKey("vndkMustUseVendorVariantListKey")
+ vndkLibrariesLock sync.Mutex
headerExts = []string{".h", ".hh", ".hpp", ".hxx", ".h++", ".inl", ".inc", ".ipp", ".h.generic"}
)
@@ -262,12 +261,6 @@
func vndkMustUseVendorVariantList(cfg android.Config) []string {
return cfg.Once(vndkMustUseVendorVariantListKey, func() interface{} {
- override := cfg.Once(testVndkMustUseVendorVariantListKey, func() interface{} {
- return []string(nil)
- }).([]string)
- if override != nil {
- return override
- }
return config.VndkMustUseVendorVariantList
}).([]string)
}
@@ -275,7 +268,7 @@
// test may call this to override global configuration(config.VndkMustUseVendorVariantList)
// when it is called, it must be before the first call to vndkMustUseVendorVariantList()
func setVndkMustUseVendorVariantListForTest(config android.Config, mustUseVendorVariantList []string) {
- config.Once(testVndkMustUseVendorVariantListKey, func() interface{} {
+ config.Once(vndkMustUseVendorVariantListKey, func() interface{} {
return mustUseVendorVariantList
})
}
diff --git a/java/androidmk.go b/java/androidmk.go
index 9e9b277..cd91b46 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -52,6 +52,7 @@
if r := library.deviceProperties.Target.Hostdex.Required; len(r) > 0 {
fmt.Fprintln(w, "LOCAL_REQUIRED_MODULES +=", strings.Join(r, " "))
}
+ fmt.Fprintln(w, "LOCAL_MODULE_STEM :=", library.Stem()+"-hostdex")
fmt.Fprintln(w, "include $(BUILD_SYSTEM)/soong_java_prebuilt.mk")
}
}
@@ -102,6 +103,7 @@
if library.proguardDictionary != nil {
entries.SetPath("LOCAL_SOONG_PROGUARD_DICT", library.proguardDictionary)
}
+ entries.SetString("LOCAL_MODULE_STEM", library.Stem())
},
},
ExtraFooters: []android.AndroidMkExtraFootersFunc{
@@ -160,6 +162,7 @@
entries.SetPath("LOCAL_SOONG_HEADER_JAR", prebuilt.combinedClasspathFile)
entries.SetPath("LOCAL_SOONG_CLASSES_JAR", prebuilt.combinedClasspathFile)
entries.SetString("LOCAL_SDK_VERSION", prebuilt.sdkVersion())
+ entries.SetString("LOCAL_MODULE_STEM", prebuilt.Stem())
},
},
}
@@ -187,6 +190,7 @@
if len(prebuilt.dexpreopter.builtInstalled) > 0 {
entries.SetString("LOCAL_SOONG_BUILT_INSTALLED", prebuilt.dexpreopter.builtInstalled)
}
+ entries.SetString("LOCAL_MODULE_STEM", prebuilt.Stem())
},
},
}
diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go
index 508443a..74ef667 100644
--- a/java/dexpreopt_bootjars.go
+++ b/java/dexpreopt_bootjars.go
@@ -73,7 +73,7 @@
for i, m := range image.modules {
name := image.name
if i != 0 {
- name += "-" + m
+ name += "-" + stemOf(m)
}
for _, ext := range exts {
diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go
index 429bbdb..b3b1317 100644
--- a/java/dexpreopt_config.go
+++ b/java/dexpreopt_config.go
@@ -96,6 +96,16 @@
return targets
}
+func stemOf(moduleName string) string {
+ // b/139391334: the stem of framework-minus-apex is framework
+ // This is hard coded here until we find a good way to query the stem
+ // of a module before any other mutators are run
+ if moduleName == "framework-minus-apex" {
+ return "framework"
+ }
+ return moduleName
+}
+
func getBootImageConfig(ctx android.PathContext, key android.OnceKey, name string,
needZip bool) bootImageConfig {
return ctx.Config().Once(key, func() interface{} {
@@ -110,18 +120,18 @@
for _, m := range artModules {
bootLocations = append(bootLocations,
- filepath.Join("/apex/com.android.art/javalib", m+".jar"))
+ filepath.Join("/apex/com.android.art/javalib", stemOf(m)+".jar"))
}
for _, m := range frameworkModules {
bootLocations = append(bootLocations,
- filepath.Join("/system/framework", m+".jar"))
+ filepath.Join("/system/framework", stemOf(m)+".jar"))
}
// The path to bootclasspath dex files needs to be known at module GenerateAndroidBuildAction time, before
// the bootclasspath modules have been compiled. Set up known paths for them, the singleton rules will copy
// them there.
- // TODO: use module dependencies instead
+ // TODO(b/143682396): use module dependencies instead
var bootDexPaths android.WritablePaths
for _, m := range imageModules {
bootDexPaths = append(bootDexPaths,
diff --git a/java/java.go b/java/java.go
index 947aa8c..d7077d1 100644
--- a/java/java.go
+++ b/java/java.go
@@ -1602,6 +1602,10 @@
return depTag == staticLibTag
}
+func (j *Module) Stem() string {
+ return proptools.StringDefault(j.deviceProperties.Stem, j.Name())
+}
+
//
// Java libraries (.jar file)
//
@@ -1631,8 +1635,7 @@
}
func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
- j.dexpreopter.installPath = android.PathForModuleInstall(ctx, "framework",
- proptools.StringDefault(j.deviceProperties.Stem, ctx.ModuleName())+".jar")
+ j.dexpreopter.installPath = android.PathForModuleInstall(ctx, "framework", j.Stem()+".jar")
j.dexpreopter.isSDKLibrary = j.deviceProperties.IsSDKLibrary
j.dexpreopter.isInstallable = Bool(j.properties.Installable)
j.dexpreopter.uncompressedDex = shouldUncompressDex(ctx, &j.dexpreopter)
@@ -1994,6 +1997,10 @@
return j.prebuilt.Name(j.ModuleBase.Name())
}
+func (j *Import) Stem() string {
+ return proptools.StringDefault(j.properties.Stem, j.ModuleBase.Name())
+}
+
func (j *Import) DepsMutator(ctx android.BottomUpMutatorContext) {
ctx.AddVariationDependencies(nil, libTag, j.properties.Libs...)
}
@@ -2001,7 +2008,7 @@
func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
jars := android.PathsForModuleSrc(ctx, j.properties.Jars)
- jarName := proptools.StringDefault(j.properties.Stem, ctx.ModuleName()) + ".jar"
+ jarName := j.Stem() + ".jar"
outputFile := android.PathForModuleOut(ctx, "combined", jarName)
TransformJarsToJar(ctx, outputFile, "for prebuilts", jars, android.OptionalPath{},
false, j.properties.Exclude_files, j.properties.Exclude_dirs)
@@ -2178,13 +2185,16 @@
return j.prebuilt.Name(j.ModuleBase.Name())
}
+func (j *DexImport) Stem() string {
+ return proptools.StringDefault(j.properties.Stem, j.ModuleBase.Name())
+}
+
func (j *DexImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
if len(j.properties.Jars) != 1 {
ctx.PropertyErrorf("jars", "exactly one jar must be provided")
}
- j.dexpreopter.installPath = android.PathForModuleInstall(ctx, "framework",
- proptools.StringDefault(j.properties.Stem, ctx.ModuleName())+".jar")
+ j.dexpreopter.installPath = android.PathForModuleInstall(ctx, "framework", j.Stem()+".jar")
j.dexpreopter.isInstallable = true
j.dexpreopter.uncompressedDex = shouldUncompressDex(ctx, &j.dexpreopter)
diff --git a/java/sdk_library.go b/java/sdk_library.go
index 476e549..b7efcff 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -79,9 +79,6 @@
}
type sdkLibraryProperties struct {
- // list of optional source files that are part of API but not part of runtime library.
- Api_srcs []string `android:"arch_variant"`
-
// List of Java libraries that will be in the classpath when building stubs
Stub_only_libs []string `android:"arch_variant"`
@@ -461,7 +458,6 @@
props.Name = proptools.StringPtr(module.docsName(apiScope))
props.Srcs = append(props.Srcs, module.Library.Module.properties.Srcs...)
- props.Srcs = append(props.Srcs, module.sdkLibraryProperties.Api_srcs...)
props.Sdk_version = proptools.StringPtr(sdkVersion)
props.Installable = proptools.BoolPtr(false)
// A droiddoc module has only one Libs property and doesn't distinguish between