Support aconfig_declarations, aconfig_values and aconfig_value_set
Bug: 297356603
Test: Unit tests
Change-Id: I2f797578a35322440db0f281b4d46b6652512e00
diff --git a/aconfig/aconfig_declarations.go b/aconfig/aconfig_declarations.go
index 5cdf5b6..ed0961b 100644
--- a/aconfig/aconfig_declarations.go
+++ b/aconfig/aconfig_declarations.go
@@ -15,16 +15,18 @@
package aconfig
import (
- "android/soong/android"
"fmt"
"strings"
+ "android/soong/android"
+ "android/soong/bazel"
"github.com/google/blueprint"
)
type DeclarationsModule struct {
android.ModuleBase
android.DefaultableModuleBase
+ android.BazelModuleBase
// Properties for "aconfig_declarations"
properties struct {
@@ -47,8 +49,7 @@
android.InitAndroidModule(module)
android.InitDefaultableModule(module)
module.AddProperties(&module.properties)
- // TODO: bp2build
- //android.InitBazelModule(module)
+ android.InitBazelModule(module)
return module
}
@@ -73,7 +74,9 @@
// RELEASE_ACONFIG_VALUE_SETS, and add any aconfig_values that
// match our package.
valuesFromConfig := ctx.Config().ReleaseAconfigValueSets()
- ctx.AddDependency(ctx.Module(), implicitValuesTag, valuesFromConfig...)
+ if valuesFromConfig != "" {
+ ctx.AddDependency(ctx.Module(), implicitValuesTag, valuesFromConfig)
+ }
}
func (module *DeclarationsModule) OutputFiles(tag string) (android.Paths, error) {
@@ -159,3 +162,26 @@
})
}
+
+type bazelAconfigDeclarationsAttributes struct {
+ Srcs bazel.LabelListAttribute
+ Package string
+}
+
+func (module *DeclarationsModule) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
+ if ctx.ModuleType() != "aconfig_declarations" {
+ return
+ }
+ srcs := bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, module.properties.Srcs))
+
+ attrs := bazelAconfigDeclarationsAttributes{
+ Srcs: srcs,
+ Package: module.properties.Package,
+ }
+ props := bazel.BazelTargetModuleProperties{
+ Rule_class: "aconfig_declarations",
+ Bzl_load_location: "//build/bazel/rules/aconfig:aconfig_declarations.bzl",
+ }
+
+ ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name()}, &attrs)
+}
diff --git a/aconfig/aconfig_value_set.go b/aconfig/aconfig_value_set.go
index 252908f..af9ddd3 100644
--- a/aconfig/aconfig_value_set.go
+++ b/aconfig/aconfig_value_set.go
@@ -16,6 +16,7 @@
import (
"android/soong/android"
+ "android/soong/bazel"
"github.com/google/blueprint"
)
@@ -23,6 +24,7 @@
type ValueSetModule struct {
android.ModuleBase
android.DefaultableModuleBase
+ android.BazelModuleBase
properties struct {
// aconfig_values modules
@@ -36,8 +38,7 @@
android.InitAndroidModule(module)
android.InitDefaultableModule(module)
module.AddProperties(&module.properties)
- // TODO: bp2build
- //android.InitBazelModule(module)
+ android.InitBazelModule(module)
return module
}
@@ -90,3 +91,23 @@
AvailablePackages: packages,
})
}
+
+type bazelAconfigValueSetAttributes struct {
+ Values bazel.LabelListAttribute
+}
+
+func (module *ValueSetModule) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
+ if ctx.ModuleType() != "aconfig_value_set" {
+ return
+ }
+
+ attrs := bazelAconfigValueSetAttributes{
+ Values: bazel.MakeLabelListAttribute(android.BazelLabelForModuleDeps(ctx, module.properties.Values)),
+ }
+ props := bazel.BazelTargetModuleProperties{
+ Rule_class: "aconfig_value_set",
+ Bzl_load_location: "//build/bazel/rules/aconfig:aconfig_value_set.bzl",
+ }
+
+ ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name()}, &attrs)
+}
diff --git a/aconfig/aconfig_values.go b/aconfig/aconfig_values.go
index 91f1c90..0aa6a72 100644
--- a/aconfig/aconfig_values.go
+++ b/aconfig/aconfig_values.go
@@ -16,6 +16,7 @@
import (
"android/soong/android"
+ "android/soong/bazel"
"github.com/google/blueprint"
)
@@ -23,6 +24,7 @@
type ValuesModule struct {
android.ModuleBase
android.DefaultableModuleBase
+ android.BazelModuleBase
properties struct {
// aconfig files, relative to this Android.bp file
@@ -39,8 +41,7 @@
android.InitAndroidModule(module)
android.InitDefaultableModule(module)
module.AddProperties(&module.properties)
- // TODO: bp2build
- //android.InitBazelModule(module)
+ android.InitBazelModule(module)
return module
}
@@ -68,3 +69,27 @@
}
ctx.SetProvider(valuesProviderKey, providerData)
}
+
+type bazelAconfigValuesAttributes struct {
+ Srcs bazel.LabelListAttribute
+ Package string
+}
+
+func (module *ValuesModule) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
+ if ctx.ModuleType() != "aconfig_values" {
+ return
+ }
+
+ srcs := bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, module.properties.Srcs))
+
+ attrs := bazelAconfigValuesAttributes{
+ Srcs: srcs,
+ Package: module.properties.Package,
+ }
+ props := bazel.BazelTargetModuleProperties{
+ Rule_class: "aconfig_values",
+ Bzl_load_location: "//build/bazel/rules/aconfig:aconfig_values.bzl",
+ }
+
+ ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: module.Name()}, &attrs)
+}
diff --git a/aconfig/init.go b/aconfig/init.go
index 797388d..c14f8ae 100644
--- a/aconfig/init.go
+++ b/aconfig/init.go
@@ -97,12 +97,12 @@
)
func init() {
- registerBuildComponents(android.InitRegistrationContext)
+ RegisterBuildComponents(android.InitRegistrationContext)
pctx.HostBinToolVariable("aconfig", "aconfig")
pctx.HostBinToolVariable("soong_zip", "soong_zip")
}
-func registerBuildComponents(ctx android.RegistrationContext) {
+func RegisterBuildComponents(ctx android.RegistrationContext) {
ctx.RegisterModuleType("aconfig_declarations", DeclarationsFactory)
ctx.RegisterModuleType("aconfig_values", ValuesFactory)
ctx.RegisterModuleType("aconfig_value_set", ValueSetFactory)
diff --git a/aconfig/testing.go b/aconfig/testing.go
index 60cefeb..f6489ec 100644
--- a/aconfig/testing.go
+++ b/aconfig/testing.go
@@ -20,7 +20,7 @@
"android/soong/android"
)
-var PrepareForTestWithAconfigBuildComponents = android.FixtureRegisterWithContext(registerBuildComponents)
+var PrepareForTestWithAconfigBuildComponents = android.FixtureRegisterWithContext(RegisterBuildComponents)
func runTest(t *testing.T, errorHandler android.FixtureErrorHandler, bp string) *android.TestResult {
return android.GroupFixturePreparers(PrepareForTestWithAconfigBuildComponents).