diff options
Diffstat (limited to 'bpf/libbpf/libbpf_prog.go')
| -rw-r--r-- | bpf/libbpf/libbpf_prog.go | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/bpf/libbpf/libbpf_prog.go b/bpf/libbpf/libbpf_prog.go index 44013e5e3..07b35a7be 100644 --- a/bpf/libbpf/libbpf_prog.go +++ b/bpf/libbpf/libbpf_prog.go @@ -25,6 +25,7 @@ import ( "android/soong/genrule" "github.com/google/blueprint" + "github.com/google/blueprint/proptools" ) type libbpfProgDepType struct { @@ -93,6 +94,12 @@ type LibbpfProgProperties struct { // optional subdirectory under which this module is installed into. Relative_install_path string + + // whether this module is specific to an SoC (System-On-a-Chip). + // When set to true, it is installed into /vendor. + Vendor *bool + + VendorInternal bool `blueprint:"mutated"` } type libbpfProg struct { @@ -107,7 +114,7 @@ var _ android.ImageInterface = (*libbpfProg)(nil) func (libbpf *libbpfProg) ImageMutatorBegin(ctx android.ImageInterfaceContext) {} func (libbpf *libbpfProg) VendorVariantNeeded(ctx android.ImageInterfaceContext) bool { - return false + return proptools.Bool(libbpf.properties.Vendor) } func (libbpf *libbpfProg) ProductVariantNeeded(ctx android.ImageInterfaceContext) bool { @@ -115,7 +122,7 @@ func (libbpf *libbpfProg) ProductVariantNeeded(ctx android.ImageInterfaceContext } func (libbpf *libbpfProg) CoreVariantNeeded(ctx android.ImageInterfaceContext) bool { - return true + return !proptools.Bool(libbpf.properties.Vendor) } func (libbpf *libbpfProg) RamdiskVariantNeeded(ctx android.ImageInterfaceContext) bool { @@ -139,6 +146,7 @@ func (libbpf *libbpfProg) ExtraImageVariations(ctx android.ImageInterfaceContext } func (libbpf *libbpfProg) SetImageVariation(ctx android.ImageInterfaceContext, variation string) { + libbpf.properties.VendorInternal = variation == "vendor" } func (libbpf *libbpfProg) DepsMutator(ctx android.BottomUpMutatorContext) { @@ -173,12 +181,12 @@ func (libbpf *libbpfProg) GenerateAndroidBuildActions(ctx android.ModuleContext) cflags = append(cflags, "-fdebug-prefix-map=/proc/self/cwd=") } - ctx.VisitDirectDeps(func(dep android.Module) { + ctx.VisitDirectDepsProxy(func(dep android.ModuleProxy) { depTag := ctx.OtherModuleDependencyTag(dep) if depTag == libbpfProgDepTag { - if genRule, ok := dep.(genrule.SourceFileGenerator); ok { - cFlagsDeps = append(cFlagsDeps, genRule.GeneratedDeps()...) - dirs := genRule.GeneratedHeaderDirs() + if info, ok := android.OtherModuleProvider(ctx, dep, android.GeneratedSourceInfoProvider); ok { + cFlagsDeps = append(cFlagsDeps, info.GeneratedDeps...) + dirs := info.GeneratedHeaderDirs for _, dir := range dirs { cflags = append(cflags, "-I "+dir.String()) } @@ -250,7 +258,11 @@ func (libbpf *libbpfProg) AndroidMk() android.AndroidMkData { fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir) fmt.Fprintln(w) var localModulePath string - localModulePath = "LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/bpf" + if libbpf.properties.VendorInternal { + localModulePath = "LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/bpf" + } else { + localModulePath = "LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/bpf" + } if len(libbpf.properties.Relative_install_path) > 0 { localModulePath += "/" + libbpf.properties.Relative_install_path } |
