summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/prebuilt_kernel_modules.go31
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.