Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 75db7840 authored by Alix's avatar Alix
Browse files

Created kotlinAttributes struct

makes it clearer which attributes are kotlin specific
embedded within javaCommonAttributes since both
java_* and android_* use kotlin.

Change-Id: Ib7c9b912a9901cd1c3d150ab1e0a79011d8e07de
Test: go test ./bp2build
parent 54d18347
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -1092,11 +1092,6 @@ func (a *AndroidLibrary) ConvertWithBp2build(ctx android.TopDownMutatorContext)
	} else if !depLabels.Deps.IsEmpty() {
		ctx.ModuleErrorf("Module has direct dependencies but no sources. Bazel will not allow this.")
	}

	if len(a.properties.Common_srcs) != 0 {
		commonAttrs.Common_srcs = bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, a.properties.Common_srcs))
	}

	name := a.Name()
	props := bazel.BazelTargetModuleProperties{
		Rule_class:        "android_library",
+1 −2
Original line number Diff line number Diff line
@@ -1528,13 +1528,12 @@ func (a *AndroidApp) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
		Bzl_load_location: "//build/bazel/rules/android:rules.bzl",
	}

	if !bp2BuildInfo.hasKotlinSrcs && len(a.properties.Common_srcs) == 0 {
	if !bp2BuildInfo.hasKotlin {
		appAttrs.javaCommonAttributes = commonAttrs
		appAttrs.bazelAapt = aapt
		appAttrs.Deps = deps
	} else {
		ktName := a.Name() + "_kt"
		commonAttrs.Common_srcs = bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, a.properties.Common_srcs))
		ctx.CreateBazelTargetModule(
			bazel.BazelTargetModuleProperties{
				Rule_class:        "android_library",
+25 −23
Original line number Diff line number Diff line
@@ -2607,10 +2607,10 @@ func (m *Library) convertJavaResourcesAttributes(ctx android.TopDownMutatorConte

type javaCommonAttributes struct {
	*javaResourcesAttributes
	*kotlinAttributes
	Srcs      bazel.LabelListAttribute
	Plugins   bazel.LabelListAttribute
	Javacopts bazel.StringListAttribute
	Common_srcs bazel.LabelListAttribute
}

type javaDependencyLabels struct {
@@ -2638,7 +2638,7 @@ type javaAidlLibraryAttributes struct {
type bp2BuildJavaInfo struct {
	// separates dependencies into dynamic dependencies and static dependencies.
	DepLabels *javaDependencyLabels
	hasKotlinSrcs bool
	hasKotlin bool
}

// convertLibraryAttrsBp2Build returns a javaCommonAttributes struct with
@@ -2785,9 +2785,17 @@ func (m *Library) convertLibraryAttrsBp2Build(ctx android.TopDownMutatorContext)
	depLabels.Deps = deps
	depLabels.StaticDeps = bazel.MakeLabelListAttribute(staticDeps)

	hasKotlin := !kotlinSrcs.IsEmpty()
	if len(m.properties.Common_srcs) != 0 {
		hasKotlin = true
		commonAttrs.kotlinAttributes = &kotlinAttributes{
			bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, m.properties.Common_srcs)),
		}
	}

	bp2BuildInfo := &bp2BuildJavaInfo{
		DepLabels: depLabels,
		hasKotlinSrcs: !kotlinSrcs.IsEmpty(),
		hasKotlin: hasKotlin,
	}

	return commonAttrs, bp2BuildInfo
@@ -2800,6 +2808,10 @@ type javaLibraryAttributes struct {
	Neverlink bazel.BoolAttribute
}

type kotlinAttributes struct {
	Common_srcs bazel.LabelListAttribute
}

func javaLibraryBp2Build(ctx android.TopDownMutatorContext, m *Library) {
	commonAttrs, bp2BuildInfo := m.convertLibraryAttrsBp2Build(ctx)
	depLabels := bp2BuildInfo.DepLabels
@@ -2828,14 +2840,12 @@ func javaLibraryBp2Build(ctx android.TopDownMutatorContext, m *Library) {
	}
	name := m.Name()

	if !bp2BuildInfo.hasKotlinSrcs && len(m.properties.Common_srcs) == 0 {
	if !bp2BuildInfo.hasKotlin {
		props = bazel.BazelTargetModuleProperties{
			Rule_class:        "java_library",
			Bzl_load_location: "//build/bazel/rules/java:library.bzl",
		}
	} else {
		attrs.javaCommonAttributes.Common_srcs = bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, m.properties.Common_srcs))

		props = bazel.BazelTargetModuleProperties{
			Rule_class:        "kt_jvm_library",
			Bzl_load_location: "//build/bazel/rules/kotlin:kt_jvm_library.bzl",
@@ -2926,7 +2936,7 @@ func javaBinaryHostBp2Build(ctx android.TopDownMutatorContext, m *Binary) {
		Jvm_flags:    jvmFlags,
	}

	if !bp2BuildInfo.hasKotlinSrcs && len(m.properties.Common_srcs) == 0 {
	if !bp2BuildInfo.hasKotlin {
		attrs.javaCommonAttributes = commonAttrs
		attrs.Deps = deps
	} else {
@@ -2935,18 +2945,10 @@ func javaBinaryHostBp2Build(ctx android.TopDownMutatorContext, m *Binary) {
			Rule_class:        "kt_jvm_library",
			Bzl_load_location: "//build/bazel/rules/kotlin:kt_jvm_library.bzl",
		}

		ktAttrs := &javaLibraryAttributes{
			Deps:                 deps,
			javaCommonAttributes: &javaCommonAttributes{
				Srcs:                    commonAttrs.Srcs,
				Plugins:                 commonAttrs.Plugins,
				Javacopts:               commonAttrs.Javacopts,
				javaResourcesAttributes: commonAttrs.javaResourcesAttributes,
			},
		}

		if len(m.properties.Common_srcs) != 0 {
			ktAttrs.javaCommonAttributes.Common_srcs = bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, m.properties.Common_srcs))
			javaCommonAttributes: commonAttrs,
		}

		ctx.CreateBazelTargetModule(ktProps, android.CommonAttributes{Name: ktName}, ktAttrs)