summaryrefslogtreecommitdiff
path: root/bpf/bpf.go
diff options
context:
space:
mode:
author Zi Wang <mrziwang@google.com> 2022-09-23 16:36:11 -0700
committer Zi Wang <mrziwang@google.com> 2022-09-28 14:18:45 -0700
commitb3cb38c3c8aa7431da9b60b8f01fa0c7cce6d89d (patch)
tree5974d304cae29b4f43beefd57ff3aafa226e6640 /bpf/bpf.go
parentc0d3527a0d2863bac1d6e4168938dadfa86dc117 (diff)
Add bp2build converter for bpf
Bug: 240163393 Test: m bp2build Test: bp2build/bpf_conversion_test.go Change-Id: Ie3bbc64511146b099a766d7e8b56e93cef58ef68
Diffstat (limited to 'bpf/bpf.go')
-rw-r--r--bpf/bpf.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/bpf/bpf.go b/bpf/bpf.go
index e89cc4ec8..dbbce505e 100644
--- a/bpf/bpf.go
+++ b/bpf/bpf.go
@@ -21,6 +21,7 @@ import (
"strings"
"android/soong/android"
+ "android/soong/bazel"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
@@ -93,6 +94,7 @@ type BpfProperties struct {
type bpf struct {
android.ModuleBase
+ android.BazelModuleBase
properties BpfProperties
@@ -260,5 +262,39 @@ func BpfFactory() android.Module {
module.AddProperties(&module.properties)
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibCommon)
+ android.InitBazelModule(module)
return module
}
+
+type bazelBpfAttributes struct {
+ Srcs bazel.LabelListAttribute
+ Copts bazel.StringListAttribute
+ Absolute_includes bazel.StringListAttribute
+ Btf *bool
+ // TODO(b/249528391): Add support for sub_dir
+}
+
+// bpf bp2build converter
+func (b *bpf) ConvertWithBp2build(ctx android.TopDownMutatorContext) {
+ if ctx.ModuleType() != "bpf" {
+ return
+ }
+
+ srcs := bazel.MakeLabelListAttribute(android.BazelLabelForModuleSrc(ctx, b.properties.Srcs))
+ copts := bazel.MakeStringListAttribute(b.properties.Cflags)
+ absolute_includes := bazel.MakeStringListAttribute(b.properties.Include_dirs)
+ btf := b.properties.Btf
+
+ attrs := bazelBpfAttributes{
+ Srcs: srcs,
+ Copts: copts,
+ Absolute_includes: absolute_includes,
+ Btf: btf,
+ }
+ props := bazel.BazelTargetModuleProperties{
+ Rule_class: "bpf",
+ Bzl_load_location: "//build/bazel/rules/bpf:bpf.bzl",
+ }
+
+ ctx.CreateBazelTargetModule(props, android.CommonAttributes{Name: b.Name()}, &attrs)
+}