diff options
author | Mike Isely <isely@pobox.com> | 2006-03-28 21:54:25 -0600 |
---|---|---|
committer | Mike Isely <isely@pobox.com> | 2006-03-28 21:54:25 -0600 |
commit | 867f09ddc4c765a136402a0bd10a54ec45b7d820 (patch) | |
tree | 64fe137c2c3ac2eee361ae8f4b7b6814719d2b8c /v4l/scripts | |
parent | da1de2e42e2a5c0290c15edbbd4017176ff0b1c2 (diff) | |
parent | fe57e9e343b68651e0666447d96d2db4fbb0a83d (diff) | |
download | mediapointer-dvb-s2-867f09ddc4c765a136402a0bd10a54ec45b7d820.tar.gz mediapointer-dvb-s2-867f09ddc4c765a136402a0bd10a54ec45b7d820.tar.bz2 |
Merge from master
From: Mike Isely <isely@pobox.com>
Signed-off-by: Mike Isely <isely@pobox.com>
Diffstat (limited to 'v4l/scripts')
-rwxr-xr-x | v4l/scripts/make_kconfig.pl | 67 |
1 files changed, 55 insertions, 12 deletions
diff --git a/v4l/scripts/make_kconfig.pl b/v4l/scripts/make_kconfig.pl index f612e83db..91c37693f 100755 --- a/v4l/scripts/make_kconfig.pl +++ b/v4l/scripts/make_kconfig.pl @@ -1,37 +1,80 @@ #!/usr/bin/perl use FileHandle; -my $KDIR=shift; my $ARCH=shift; +my %depend = (); +my %config = (); + +sub add_config($) +{ + my $arg=shift; + + if ($arg =~ m/^([A-Z0-9_]+)/) { + $config{$1} = 1; + } +} + +sub check_deps($) +{ + my $arg=shift; + $arg=$arg." "; + + while ($arg ne "") { + if ($arg =~ m/^([A-Z0-9_]+) /) { + my $val=$1; + my $prev=$depend{$val}; + $depend { $val } = 1+$prev; + } + $arg =~ s/^[^ ]+ //; + } +} + sub open_kconfig($$) { my ($dir,$file)=@_; my $in = new FileHandle; -print "opening $file\n"; +#print "opening $file\n"; open $in,"$file"; while (<$in>) { - if (m;^\s*source[\s\"]+drivers/media/(video|dvb)/Kconfig;) { - next; - } +# if (m;^\s*source[\s\"]+drivers/media/(video|dvb)/Kconfig;) { +# next; +# } if (m|^\s*source[\s\"]+([^\n\s\"]+)[\n\s\"]|) { open_kconfig($dir,"$dir/$1"); next; } + if (m|^\s+depends on (.*)\n|) { + check_deps ($1); + } + if (m|^\s+select (.*)\n|) { + check_deps ($1); + } + if (m|^\s*config (.*)\n|) { + add_config ($1); + } + s/^main(menu\s\"[^\"]+)/\1 - DON'T CHANGE IT!/; print OUT $_; } close $in; } -open OUT,">Kconfig.kern"; -open_kconfig($KDIR,"$KDIR/arch/$ARCH/Kconfig"); -print OUT "endmenu\n"; -close OUT; - open OUT,">Kconfig"; print OUT "mainmenu \"V4L/DVB menu\"\n"; -open_kconfig ("../linux","../linux/drivers/media/video/Kconfig"); -open_kconfig ("../linux","../linux/drivers/media/dvb/Kconfig"); + print OUT "source Kconfig.kern\n"; +open_kconfig ("../linux","../linux/drivers/media/Kconfig"); + close OUT; + +while ( my ($key, $value) = each(%config) ) { + delete $depend{$key}; +} + +open OUT,">Kconfig.kern"; +while ( my ($key, $value) = each(%depend) ) { + print OUT "# $key with $value refs\nconfig $key\n\ttristate\n\tdefault m\n\n"; +} +close OUT; + |