diff options
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/prebuilt_kernel_modules.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/kernel/prebuilt_kernel_modules.go b/kernel/prebuilt_kernel_modules.go index 13d648235..e4302e172 100644 --- a/kernel/prebuilt_kernel_modules.go +++ b/kernel/prebuilt_kernel_modules.go @@ -58,6 +58,9 @@ type prebuiltKernelModulesProperties struct { Blocklist_file *string `android:"path"` + // Path to the kernel module options file + Options_file *string `android:"path"` + // 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 @@ -112,6 +115,7 @@ func (pkm *prebuiltKernelModules) GenerateAndroidBuildActions(ctx android.Module ctx.InstallFile(installDir, "modules.softdep", depmodOut.modulesSoftdep) ctx.InstallFile(installDir, "modules.alias", depmodOut.modulesAlias) pkm.installBlocklistFile(ctx, installDir) + pkm.installOptionsFile(ctx, installDir) ctx.SetOutputFiles(modules, ".modules") } @@ -130,6 +134,20 @@ func (pkm *prebuiltKernelModules) installBlocklistFile(ctx android.ModuleContext ctx.InstallFile(installDir, "modules.blocklist", blocklistOut) } +func (pkm *prebuiltKernelModules) installOptionsFile(ctx android.ModuleContext, installDir android.InstallPath) { + if pkm.properties.Options_file == nil { + return + } + optionsOut := android.PathForModuleOut(ctx, "modules.options") + + ctx.Build(pctx, android.BuildParams{ + Rule: processOptionsFile, + Input: android.PathForModuleSrc(ctx, proptools.String(pkm.properties.Options_file)), + Output: optionsOut, + }) + ctx.InstallFile(installDir, "modules.options", optionsOut) +} + var ( pctx = android.NewPackageContext("android/soong/kernel") @@ -189,6 +207,19 @@ var ( ` END { exit exit_status }'`, }, ) + // Remove empty lines. Raise an exception if line is _not_ formatted as `options $name.ko` + processOptionsFile = pctx.AndroidStaticRule("process_options_file", + blueprint.RuleParams{ + Command: `rm -rf $out && awk <$in > $out` + + ` '/^#/ { print; next }` + + ` NF == 0 { next }` + + ` NF < 2 || $$1 != "options"` + + ` { print "Invalid options line " FNR ": " $$0 >"/dev/stderr";` + + ` exit_status = 1; next }` + + ` { $$1 = $$1; print }` + + ` END { exit exit_status }'`, + }, + ) ) // This is the path in soong intermediates where the .ko files will be copied. |