diff options
Diffstat (limited to 'java/java.go')
| -rw-r--r-- | java/java.go | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/java/java.go b/java/java.go index 25b6349bf..e37a77e46 100644 --- a/java/java.go +++ b/java/java.go @@ -764,6 +764,9 @@ type librarySdkMemberProperties struct { // The list of permitted packages that need to be passed to the prebuilts as they are used to // create the updatable-bcp-packages.txt file. PermittedPackages []string + + // The value of the min_sdk_version property, translated into a number where possible. + MinSdkVersion *string `supported_build_releases:"Tiramisu+"` } func (p *librarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberContext, variant android.Module) { @@ -774,6 +777,13 @@ func (p *librarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMemberCo p.AidlIncludeDirs = j.AidlIncludeDirs() p.PermittedPackages = j.PermittedPackagesForUpdatableBootJars() + + // If the min_sdk_version was set then add the canonical representation of the API level to the + // snapshot. + if j.deviceProperties.Min_sdk_version != nil { + canonical := android.ReplaceFinalizedCodenames(ctx.SdkModuleContext().Config(), j.minSdkVersion.ApiLevel.String()) + p.MinSdkVersion = proptools.StringPtr(canonical) + } } func (p *librarySdkMemberProperties) AddToPropertySet(ctx android.SdkMemberContext, propertySet android.BpPropertySet) { @@ -792,6 +802,10 @@ func (p *librarySdkMemberProperties) AddToPropertySet(ctx android.SdkMemberConte propertySet.AddProperty("jars", []string{snapshotRelativeJavaLibPath}) } + if p.MinSdkVersion != nil { + propertySet.AddProperty("min_sdk_version", *p.MinSdkVersion) + } + if len(p.PermittedPackages) > 0 { propertySet.AddProperty("permitted_packages", p.PermittedPackages) } @@ -1648,7 +1662,7 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { var srcFiles []android.Path ctx.VisitDirectDepsWithTag(javaApiContributionTag, func(dep android.Module) { provider := ctx.OtherModuleProvider(dep, JavaApiImportProvider).(JavaApiImportInfo) - srcFiles = append(srcFiles, android.PathForModuleSrc(ctx, provider.ApiFile.String())) + srcFiles = append(srcFiles, android.PathForSource(ctx, provider.ApiFile.String())) }) cmd := metalavaStubCmd(ctx, rule, srcFiles, homeDir) @@ -1673,6 +1687,8 @@ func (al *ApiLibrary) GenerateAndroidBuildActions(ctx android.ModuleContext) { TransformJavaToClasses(ctx, al.stubsJar, 0, android.Paths{}, android.Paths{al.stubsSrcJar}, flags, android.Paths{}) + + ctx.Phony(ctx.ModuleName(), al.stubsJar) } // @@ -2606,7 +2622,7 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext) if m.properties.Libs != nil { // TODO 244210934 ALIX Check if this else statement breaks presubmits get rid of it if it doesn't - if strings.HasPrefix(ctx.ModuleType(), "java_binary") { + if strings.HasPrefix(ctx.ModuleType(), "java_binary") || strings.HasPrefix(ctx.ModuleType(), "java_library") { for _, d := range m.properties.Libs { neverlinkLabel := android.BazelLabelForModuleDepSingle(ctx, d) neverlinkLabel.Label = neverlinkLabel.Label + "-neverlink" @@ -2674,12 +2690,21 @@ func javaLibraryBp2Build(ctx android.TopDownMutatorContext, m *Library) { Deps: deps, Exports: depLabels.StaticDeps, } + name := m.Name() if !bp2BuildInfo.hasKotlinSrcs && len(m.properties.Common_srcs) == 0 { props = bazel.BazelTargetModuleProperties{ Rule_class: "java_library", Bzl_load_location: "//build/bazel/rules/java:library.bzl", } + + ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, attrs) + neverlinkProp := true + neverLinkAttrs := &javaLibraryAttributes{ + Exports: bazel.MakeSingleLabelListAttribute(bazel.Label{Label: ":" + name}), + Neverlink: bazel.BoolAttribute{Value: &neverlinkProp}, + } + ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name + "-neverlink"}, neverLinkAttrs) } else { attrs.Common_srcs = bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, m.properties.Common_srcs)) @@ -2687,10 +2712,10 @@ func javaLibraryBp2Build(ctx android.TopDownMutatorContext, m *Library) { Rule_class: "kt_jvm_library", Bzl_load_location: "@rules_kotlin//kotlin:jvm_library.bzl", } + // TODO (b/244210934): create neverlink-duplicate target once kt_jvm_library supports neverlink attribute + ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, attrs) } - name := m.Name() - ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: name}, attrs) } type javaBinaryHostAttributes struct { |