diff options
Diffstat (limited to 'v4l/scripts/make_kconfig.pl')
-rwxr-xr-x | v4l/scripts/make_kconfig.pl | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/v4l/scripts/make_kconfig.pl b/v4l/scripts/make_kconfig.pl index b1d6f5d53..11392c32d 100755 --- a/v4l/scripts/make_kconfig.pl +++ b/v4l/scripts/make_kconfig.pl @@ -4,8 +4,27 @@ use FileHandle; my %depend = (); my %minver = (); my %config = (); +my %tristate = (); my $version, $level, $sublevel; +my $force_kconfig=shift; + +sub add_bool($) +{ + my $arg=shift; + + $tristate{$arg}="bool"; + printf "Boolean:%s\n",$arg; +} + +sub add_tristate($) +{ + my $arg=shift; + + $tristate{$arg}="tristate"; + printf "Tristate:%s\n",$arg; +} + sub add_config($) { my $arg=shift; @@ -34,6 +53,7 @@ sub open_kconfig($$) { my ($dir,$file)=@_; my $in = new FileHandle; my $skip=0; + my $key; #print "opening $file\n"; open $in,"$file"; @@ -51,9 +71,14 @@ sub open_kconfig($$) { if (m|^\s+select (.*)\n|) { check_deps ($1); } + if (m|^\s*bool\s+|) { + add_bool($key); + } + if (m|^\s*tristate\s+|) { + add_tristate($key); + } if (m|^\s*config (.*)\n|) { - my $key=$1; - + $key=$1; add_config ($1); my $min=$minver { $key }; @@ -139,9 +164,26 @@ while ( my ($key, $value) = each(%config) ) { open OUT,">Kconfig.kern"; print OUT "config MODULES\n\tboolean\n\tdefault y\n\n"; +$tristate{"MODULES"}="bool"; while ( my ($key, $value) = each(%depend) ) { print OUT "# $key with $value refs\nconfig $key\n\ttristate\n\tdefault m\n\n"; } close OUT; +if (($force_kconfig eq 1) || !open IN,".config") { + open OUT,">.config"; + while ( my ($key,$value) = each(%tristate) ) { + + if ($key eq "DVB_AV7110_FIRMWARE") { + printf OUT "CONFIG_%s=n\n",$key; + } else { + if ($value eq "tristate") { + printf OUT "CONFIG_%s=m\n",$key; + } else { + printf OUT "CONFIG_%s=y\n",$key; + } + } + } + close OUT; +} |