summaryrefslogtreecommitdiff
path: root/bpf/bpf.go
diff options
context:
space:
mode:
author Zi Wang <mrziwang@google.com> 2022-10-04 16:59:31 -0700
committer Zi Wang <mrziwang@google.com> 2022-10-07 18:30:45 +0000
commitaa981edcf068b21bef7a2ad1c03da5356bba4a53 (patch)
treeff10d5f30d97c5eddd4b0db923d8d2e19b6cc946 /bpf/bpf.go
parentf1e6126cb0856451791741c7af4f3c28fadfebf3 (diff)
Incorporate bpf into mixed builds
Bug: 240163393 Test: TestBpfWithBazel in bpf_test.go Change-Id: I1d24a9c0d1d6911987c730bf1b5b7e02d6e73a5e
Diffstat (limited to 'bpf/bpf.go')
-rw-r--r--bpf/bpf.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/bpf/bpf.go b/bpf/bpf.go
index dbbce505e..60a410d7f 100644
--- a/bpf/bpf.go
+++ b/bpf/bpf.go
@@ -22,6 +22,7 @@ import (
"android/soong/android"
"android/soong/bazel"
+ "android/soong/bazel/cquery"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
@@ -239,6 +240,35 @@ func (bpf *bpf) AndroidMk() android.AndroidMkData {
}
}
+var _ android.MixedBuildBuildable = (*bpf)(nil)
+
+func (bpf *bpf) IsMixedBuildSupported(ctx android.BaseModuleContext) bool {
+ return true
+}
+
+func (bpf *bpf) QueueBazelCall(ctx android.BaseModuleContext) {
+ bazelCtx := ctx.Config().BazelContext
+ bazelCtx.QueueBazelRequest(
+ bpf.GetBazelLabel(ctx, bpf),
+ cquery.GetOutputFiles,
+ android.GetConfigKey(ctx))
+}
+
+func (bpf *bpf) ProcessBazelQueryResponse(ctx android.ModuleContext) {
+ bazelCtx := ctx.Config().BazelContext
+ objPaths, err := bazelCtx.GetOutputFiles(bpf.GetBazelLabel(ctx, bpf), android.GetConfigKey(ctx))
+ if err != nil {
+ ctx.ModuleErrorf(err.Error())
+ return
+ }
+
+ bazelOuts := android.Paths{}
+ for _, p := range objPaths {
+ bazelOuts = append(bazelOuts, android.PathForBazelOut(ctx, p))
+ }
+ bpf.objs = bazelOuts
+}
+
// Implements OutputFileFileProducer interface so that the obj output can be used in the data property
// of other modules.
func (bpf *bpf) OutputFiles(tag string) (android.Paths, error) {