diff options
author | 2022-10-04 16:59:31 -0700 | |
---|---|---|
committer | 2022-10-07 18:30:45 +0000 | |
commit | aa981edcf068b21bef7a2ad1c03da5356bba4a53 (patch) | |
tree | ff10d5f30d97c5eddd4b0db923d8d2e19b6cc946 /bpf/bpf.go | |
parent | f1e6126cb0856451791741c7af4f3c28fadfebf3 (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.go | 30 |
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) { |