diff options
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 62 |
1 files changed, 42 insertions, 20 deletions
diff --git a/java/java.go b/java/java.go index bf62578f8..47dd95724 100644 --- a/java/java.go +++ b/java/java.go @@ -221,6 +221,13 @@ type CompilerDeviceProperties struct { // If true, export a copy of the module as a -hostdex module for host testing. Hostdex *bool + Target struct { + Hostdex struct { + // Additional required dependencies to add to -hostdex modules. + Required []string + } + } + // If set to true, compile dex regardless of installable. Defaults to false. Compile_dex *bool @@ -228,6 +235,8 @@ type CompilerDeviceProperties struct { // If false, disable all optimization. Defaults to true for android_app and android_test // modules, false for java_library and java_test modules. Enabled *bool + // True if the module containing this has it set by default. + EnabledByDefault bool `blueprint:"mutated"` // If true, optimize for size by removing unused code. Defaults to true for apps, // false for libraries and tests. @@ -257,6 +266,10 @@ type CompilerDeviceProperties struct { IsSDKLibrary bool `blueprint:"mutated"` } +func (me *CompilerDeviceProperties) EffectiveOptimizeEnabled() bool { + return BoolDefault(me.Optimize.Enabled, me.Optimize.EnabledByDefault) +} + // Module contains the properties and members used by all java module types type Module struct { android.ModuleBase @@ -410,7 +423,7 @@ type sdkDep struct { frameworkResModule string jars android.Paths - aidl android.Path + aidl android.OptionalPath } type jniLib struct { @@ -460,7 +473,7 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { } else if sdkDep.useModule { ctx.AddVariationDependencies(nil, systemModulesTag, sdkDep.systemModules) ctx.AddVariationDependencies(nil, bootClasspathTag, sdkDep.modules...) - if Bool(j.deviceProperties.Optimize.Enabled) { + if j.deviceProperties.EffectiveOptimizeEnabled() { ctx.AddVariationDependencies(nil, proguardRaiseTag, config.DefaultBootclasspathLibraries...) ctx.AddVariationDependencies(nil, proguardRaiseTag, config.DefaultLibraries...) } @@ -534,7 +547,7 @@ func (j *Module) hasSrcExt(ext string) bool { } func (j *Module) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.OptionalPath, - aidlIncludeDirs android.Paths) []string { + aidlIncludeDirs android.Paths) (string, android.Paths) { aidlIncludes := android.PathsForModuleSrc(ctx, j.deviceProperties.Aidl.Local_include_dirs) aidlIncludes = append(aidlIncludes, @@ -542,16 +555,24 @@ func (j *Module) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.Opt aidlIncludes = append(aidlIncludes, android.PathsForSource(ctx, j.deviceProperties.Aidl.Include_dirs)...) - flags := []string{} + var flags []string + var deps android.Paths if aidlPreprocess.Valid() { flags = append(flags, "-p"+aidlPreprocess.String()) - } else { + deps = append(deps, aidlPreprocess.Path()) + } else if len(aidlIncludeDirs) > 0 { flags = append(flags, android.JoinWithPrefix(aidlIncludeDirs.Strings(), "-I")) } - flags = append(flags, android.JoinWithPrefix(j.exportAidlIncludeDirs.Strings(), "-I")) - flags = append(flags, android.JoinWithPrefix(aidlIncludes.Strings(), "-I")) + if len(j.exportAidlIncludeDirs) > 0 { + flags = append(flags, android.JoinWithPrefix(j.exportAidlIncludeDirs.Strings(), "-I")) + } + + if len(aidlIncludes) > 0 { + flags = append(flags, android.JoinWithPrefix(aidlIncludes.Strings(), "-I")) + } + flags = append(flags, "-I"+android.PathForModuleSrc(ctx).String()) if src := android.ExistentPathForSource(ctx, ctx.ModuleDir(), "src"); src.Valid() { flags = append(flags, "-I"+src.String()) @@ -565,7 +586,7 @@ func (j *Module) aidlFlags(ctx android.ModuleContext, aidlPreprocess android.Opt flags = append(flags, "--transaction_names") } - return flags + return strings.Join(flags, " "), deps } type deps struct { @@ -683,7 +704,9 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { } else if sdkDep.useFiles { // sdkDep.jar is actually equivalent to turbine header.jar. deps.classpath = append(deps.classpath, sdkDep.jars...) - deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, sdkDep.aidl) + deps.aidlPreprocess = sdkDep.aidl + } else { + deps.aidlPreprocess = sdkDep.aidl } } @@ -713,7 +736,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { deps.classpath = append(deps.classpath, dep.SdkHeaderJars(ctx, j.sdkVersion())...) // names of sdk libs that are directly depended are exported j.exportedSdkLibs = append(j.exportedSdkLibs, otherName) - default: + case staticLibTag: ctx.ModuleErrorf("dependency on java_sdk_library %q can only be in libs", otherName) } case Dependency: @@ -724,6 +747,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { deps.classpath = append(deps.classpath, dep.HeaderJars()...) // sdk lib names from dependencies are re-exported j.exportedSdkLibs = append(j.exportedSdkLibs, dep.ExportedSdkLibs()...) + deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, dep.AidlIncludeDirs()...) case staticLibTag: deps.classpath = append(deps.classpath, dep.HeaderJars()...) deps.staticJars = append(deps.staticJars, dep.ImplementationJars()...) @@ -731,6 +755,7 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { deps.staticResourceJars = append(deps.staticResourceJars, dep.ResourceJars()...) // sdk lib names from dependencies are re-exported j.exportedSdkLibs = append(j.exportedSdkLibs, dep.ExportedSdkLibs()...) + deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, dep.AidlIncludeDirs()...) case pluginTag: if plugin, ok := dep.(*Plugin); ok { deps.processorPath = append(deps.processorPath, dep.ImplementationAndResourcesJars()...) @@ -765,7 +790,6 @@ func (j *Module) collectDeps(ctx android.ModuleContext) deps { deps.kotlinAnnotations = dep.HeaderJars() } - deps.aidlIncludeDirs = append(deps.aidlIncludeDirs, dep.AidlIncludeDirs()...) case android.SourceFileProducer: switch tag { case libTag: @@ -806,7 +830,7 @@ func getJavaVersion(ctx android.ModuleContext, javaVersion string, sdkContext sd v := sdkContext.sdkVersion() // For PDK builds, use the latest SDK version instead of "current" if ctx.Config().IsPdkBuild() && (v == "" || v == "current") { - sdkVersions := ctx.Config().Get(sdkSingletonKey).([]int) + sdkVersions := ctx.Config().Get(sdkVersionsKey).([]int) latestSdkVersion := 0 if len(sdkVersions) > 0 { latestSdkVersion = sdkVersions[len(sdkVersions)-1] @@ -919,12 +943,7 @@ func (j *Module) collectBuilderFlags(ctx android.ModuleContext, deps deps) javaB } // aidl flags. - aidlFlags := j.aidlFlags(ctx, deps.aidlPreprocess, deps.aidlIncludeDirs) - if len(aidlFlags) > 0 { - // optimization. - ctx.Variable(pctx, "aidlFlags", strings.Join(aidlFlags, " ")) - flags.aidlFlags = "$aidlFlags" - } + flags.aidlFlags, flags.aidlDeps = j.aidlFlags(ctx, deps.aidlPreprocess, deps.aidlIncludeDirs) if len(javacFlags) > 0 { // optimization. @@ -1234,9 +1253,9 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path // merge implementation jar with resources if necessary implementationAndResourcesJar := outputFile if j.resourceJar != nil { - jars := android.Paths{implementationAndResourcesJar, j.resourceJar} + jars := android.Paths{j.resourceJar, implementationAndResourcesJar} combinedJar := android.PathForModuleOut(ctx, "withres", jarName) - TransformJarsToJar(ctx, combinedJar, "for resources", jars, android.OptionalPath{}, + TransformJarsToJar(ctx, combinedJar, "for resources", jars, manifest, false, nil, nil) implementationAndResourcesJar = combinedJar } @@ -1620,6 +1639,9 @@ func TestHelperLibraryFactory() android.Module { &module.Module.protoProperties, &module.testHelperLibraryProperties) + module.Module.properties.Installable = proptools.BoolPtr(true) + module.Module.dexpreopter.isTest = true + InitJavaModule(module, android.HostAndDeviceSupported) return module } |