summaryrefslogtreecommitdiff
path: root/scripts/metadata.pl
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2007-07-18 11:31:01 +0000
committerFelix Fietkau <nbd@openwrt.org>2007-07-18 11:31:01 +0000
commit8e4255397198574a9cd1354e194cb65bdd2051c0 (patch)
treebe8d0a838c6289a68035c8cd154d1ef44cb857bf /scripts/metadata.pl
parent00d88f9ffc1484eb8a0761b03c3171ab47d4adbb (diff)
downloadmtk-20170518-8e4255397198574a9cd1354e194cb65bdd2051c0.zip
mtk-20170518-8e4255397198574a9cd1354e194cb65bdd2051c0.tar.gz
mtk-20170518-8e4255397198574a9cd1354e194cb65bdd2051c0.tar.bz2
dynamically enable/disable kernel config options for kmod packages based on build system config
SVN-Revision: 8026
Diffstat (limited to 'scripts/metadata.pl')
-rwxr-xr-xscripts/metadata.pl41
1 files changed, 40 insertions, 1 deletions
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 46f6644..a665361 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -137,6 +137,42 @@ sub parse_package_metadata() {
return %category;
}
+sub gen_kconfig_overrides() {
+ my %config;
+ my $package;
+ my $pkginfo = shift @ARGV;
+ my $cfgfile = shift @ARGV;
+
+ # parameter 2: build system config
+ open FILE, "<$cfgfile" or return;
+ while (<FILE>) {
+ /^(CONFIG_.+?)=(.+)$/ and $config{$1} = 1;
+ }
+ close FILE;
+
+ # parameter 1: package metadata
+ open FILE, "<$pkginfo" or return;
+ while (<FILE>) {
+ /^Package:\s*(.+?)\s*$/ and $package = $1;
+ /^Kernel-Config:\s*(.+?)\s*$/ and do {
+ my @config = split /\s+/, $1;
+ foreach my $config (@config) {
+ my $val = 'm';
+ if ($config =~ /^(.+?)=(.+)$/) {
+ $config = $1;
+ $val = $2;
+ }
+ if ($config{"CONFIG_PACKAGE_$package"} and ($config ne 'n')) {
+ print "$config=$val\n";
+ } else {
+ print "# $config is not set\n";
+ }
+ }
+ };
+ };
+ close FILE;
+}
+
sub merge_package_lists($$) {
my $list1 = shift;
my $list2 = shift;
@@ -572,13 +608,16 @@ sub parse_command() {
/^target_config$/ and return gen_target_config();
/^package_mk$/ and return gen_package_mk();
/^package_config$/ and return gen_package_config();
+ /^kconfig/ and return gen_kconfig_overrides();
}
print <<EOF
Available Commands:
$0 target_mk [file] Target metadata in makefile format
$0 target_config [file] Target metadata in Kconfig format
- $0 package_mk [file] Package metadata in makefile format
+ $0 package_mk [file] Package metadata in makefile format
$0 package_config [file] Package metadata in Kconfig format
+ $0 kconfig [file] [config] Kernel config overrides
+
EOF
}