aboutsummaryrefslogtreecommitdiff
path: root/java/java.go
diff options
context:
space:
mode:
Diffstat (limited to 'java/java.go')
-rw-r--r--java/java.go66
1 files changed, 60 insertions, 6 deletions
diff --git a/java/java.go b/java/java.go
index 54b15f80e..946a1df4f 100644
--- a/java/java.go
+++ b/java/java.go
@@ -294,6 +294,11 @@ type UsesLibraryDependency interface {
ClassLoaderContexts() dexpreopt.ClassLoaderContextMap
}
+// Provides transitive Proguard flag files to downstream DEX jars.
+type LibraryDependency interface {
+ ExportedProguardFlagFiles() android.Paths
+}
+
// TODO(jungjw): Move this to kythe.go once it's created.
type xref interface {
XrefJavaFiles() android.Paths
@@ -516,6 +521,11 @@ func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext an
}
}
+// Java version for stubs generation
+func getStubsJavaVersion() javaVersion {
+ return JAVA_VERSION_8
+}
+
type javaVersion int
const (
@@ -596,9 +606,17 @@ func normalizeJavaVersion(ctx android.BaseModuleContext, javaVersion string) jav
type Library struct {
Module
+ exportedProguardFlagFiles android.Paths
+
InstallMixin func(ctx android.ModuleContext, installPath android.Path) (extraInstallDeps android.Paths)
}
+var _ LibraryDependency = (*Library)(nil)
+
+func (j *Library) ExportedProguardFlagFiles() android.Paths {
+ return j.exportedProguardFlagFiles
+}
+
var _ android.ApexModule = (*Library)(nil)
// Provides access to the list of permitted packages from apex boot jars.
@@ -694,6 +712,15 @@ func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) {
}
j.installFile = ctx.InstallFile(installDir, j.Stem()+".jar", j.outputFile, extraInstallDeps...)
}
+
+ j.exportedProguardFlagFiles = append(j.exportedProguardFlagFiles,
+ android.PathsForModuleSrc(ctx, j.dexProperties.Optimize.Proguard_flags_files)...)
+ ctx.VisitDirectDeps(func(m android.Module) {
+ if lib, ok := m.(LibraryDependency); ok && ctx.OtherModuleDependencyTag(m) == staticLibTag {
+ j.exportedProguardFlagFiles = append(j.exportedProguardFlagFiles, lib.ExportedProguardFlagFiles()...)
+ }
+ })
+ j.exportedProguardFlagFiles = android.FirstUniquePaths(j.exportedProguardFlagFiles)
}
func (j *Library) DepsMutator(ctx android.BottomUpMutatorContext) {
@@ -888,6 +915,10 @@ type TestOptions struct {
// a list of extra test configuration files that should be installed with the module.
Extra_test_configs []string `android:"path,arch_variant"`
+
+ // Extra <option> tags to add to the auto generated test xml file. The "key"
+ // is optional in each of these.
+ Tradefed_options []tradefed.Option
}
type testProperties struct {
@@ -1165,9 +1196,18 @@ func (j *Test) generateAndroidBuildActionsWithConfig(ctx android.ModuleContext,
defaultUnitTest := !inList("tradefed", j.properties.Libs) && !inList("cts", j.testProperties.Test_suites)
j.testProperties.Test_options.Unit_test = proptools.BoolPtr(defaultUnitTest)
}
-
- j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.testProperties.Test_config, j.testProperties.Test_config_template,
- j.testProperties.Test_suites, configs, j.testProperties.Auto_gen_config, j.testProperties.Test_options.Unit_test)
+ j.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{
+ TestConfigProp: j.testProperties.Test_config,
+ TestConfigTemplateProp: j.testProperties.Test_config_template,
+ TestSuites: j.testProperties.Test_suites,
+ Config: configs,
+ OptionsForAutogenerated: j.testProperties.Test_options.Tradefed_options,
+ AutoGenConfig: j.testProperties.Auto_gen_config,
+ UnitTest: j.testProperties.Test_options.Unit_test,
+ DeviceTemplate: "${JavaTestConfigTemplate}",
+ HostTemplate: "${JavaHostTestConfigTemplate}",
+ HostUnitTestTemplate: "${JavaHostUnitTestConfigTemplate}",
+ })
j.data = android.PathsForModuleSrc(ctx, j.testProperties.Data)
@@ -1212,8 +1252,13 @@ func (j *TestHelperLibrary) GenerateAndroidBuildActions(ctx android.ModuleContex
}
func (j *JavaTestImport) GenerateAndroidBuildActions(ctx android.ModuleContext) {
- j.testConfig = tradefed.AutoGenJavaTestConfig(ctx, j.prebuiltTestProperties.Test_config, nil,
- j.prebuiltTestProperties.Test_suites, nil, nil, nil)
+ j.testConfig = tradefed.AutoGenTestConfig(ctx, tradefed.AutoGenTestConfigOptions{
+ TestConfigProp: j.prebuiltTestProperties.Test_config,
+ TestSuites: j.prebuiltTestProperties.Test_suites,
+ DeviceTemplate: "${JavaTestConfigTemplate}",
+ HostTemplate: "${JavaHostTestConfigTemplate}",
+ HostUnitTestTemplate: "${JavaHostUnitTestConfigTemplate}",
+ })
j.Import.GenerateAndroidBuildActions(ctx)
}
@@ -1696,6 +1741,7 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) {
al.stubsJar = android.PathForModuleOut(ctx, ctx.ModuleName(), "android.jar")
var flags javaBuilderFlags
+ flags.javaVersion = getStubsJavaVersion()
flags.javacFlags = strings.Join(al.properties.Javacflags, " ")
TransformJavaToClasses(ctx, al.stubsJar, 0, android.Paths{},
@@ -1959,7 +2005,15 @@ func (j *Import) GenerateAndroidBuildActions(ctx android.ModuleContext) {
j.dexpreopter.uncompressedDex = *j.dexProperties.Uncompress_dex
var dexOutputFile android.OutputPath
- dexOutputFile = j.dexer.compileDex(ctx, flags, j.MinSdkVersion(ctx), outputFile, jarName)
+ dexParams := &compileDexParams{
+ flags: flags,
+ sdkVersion: j.SdkVersion(ctx),
+ minSdkVersion: j.MinSdkVersion(ctx),
+ classesJar: outputFile,
+ jarName: jarName,
+ }
+
+ dexOutputFile = j.dexer.compileDex(ctx, dexParams)
if ctx.Failed() {
return
}