diff options
Diffstat (limited to 'kernel/prebuilt_kernel_modules.go')
-rw-r--r-- | kernel/prebuilt_kernel_modules.go | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/kernel/prebuilt_kernel_modules.go b/kernel/prebuilt_kernel_modules.go index 4c0a9112b..5893211fb 100644 --- a/kernel/prebuilt_kernel_modules.go +++ b/kernel/prebuilt_kernel_modules.go @@ -47,6 +47,10 @@ type prebuiltKernelModulesProperties struct { // List or filegroup of prebuilt kernel module files. Should have .ko suffix. Srcs []string `android:"path,arch_variant"` + // If false, then srcs will not be included in modules.load. + // This feature is used by system_dlkm + Load_by_default *bool + // Kernel version that these modules are for. Kernel modules are installed to // /lib/modules/<kernel_version> directory in the corresponding partition. Default is "". Kernel_version *string @@ -83,7 +87,7 @@ func (pkm *prebuiltKernelModules) GenerateAndroidBuildActions(ctx android.Module } modules := android.PathsForModuleSrc(ctx, pkm.properties.Srcs) - depmodOut := runDepmod(ctx, modules) + depmodOut := pkm.runDepmod(ctx, modules, systemModules) strippedModules := stripDebugSymbols(ctx, modules) installDir := android.PathForModuleInstall(ctx, "lib", "modules") @@ -137,7 +141,7 @@ type depmodOutputs struct { modulesAlias android.OutputPath } -func runDepmod(ctx android.ModuleContext, modules android.Paths) depmodOutputs { +func (pkm *prebuiltKernelModules) runDepmod(ctx android.ModuleContext, modules android.Paths, systemModules android.Paths) depmodOutputs { baseDir := android.PathForModuleOut(ctx, "depmod").OutputPath fakeVer := "0.0" // depmod demands this anyway modulesDir := baseDir.Join(ctx, "lib", "modules", fakeVer) @@ -153,14 +157,20 @@ func runDepmod(ctx android.ModuleContext, modules android.Paths) depmodOutputs { // Enumerate modules to load modulesLoad := modulesDir.Join(ctx, "modules.load") - var basenames []string - for _, m := range modules { - basenames = append(basenames, filepath.Base(m.String())) + // If Load_by_default is set to false explicitly, create an empty modules.load + if pkm.properties.Load_by_default != nil && !*pkm.properties.Load_by_default { + builder.Command().Text("rm").Flag("-rf").Text(modulesLoad.String()) + builder.Command().Text("touch").Output(modulesLoad) + } else { + var basenames []string + for _, m := range modules { + basenames = append(basenames, filepath.Base(m.String())) + } + builder.Command(). + Text("echo").Flag("\"" + strings.Join(basenames, " ") + "\""). + Text("|").Text("tr").Flag("\" \"").Flag("\"\\n\""). + Text(">").Output(modulesLoad) } - builder.Command(). - Text("echo").Flag("\"" + strings.Join(basenames, " ") + "\""). - Text("|").Text("tr").Flag("\" \"").Flag("\"\\n\""). - Text(">").Output(modulesLoad) // Run depmod to build modules.dep/softdep/alias files modulesDep := modulesDir.Join(ctx, "modules.dep") |