Merge tag 'localmodconfig-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 20 Jan 2014 17:37:38 +0000 (09:37 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 20 Jan 2014 17:37:38 +0000 (09:37 -0800)
Pull localmodconfig update from Steven Rostedt:
 "While debugging the problem with localmodconfig and the ALSA codec
  modules all being set, I discovered a small bug in the dependency
  logic.

  If a config has a dependency based on its setting value,
  localmodcondig misses it.

  For example:

    config FOO
        default y if BAR || ZOO

  If FOO is needed for a module and is set to '=m', and so are BAR or
  ZOO, localmodconfig will not see that BAR or ZOO are also needed for
  the foo module, and will incorrectly disable them"

* tag 'localmodconfig-v3.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-kconfig:
  localmodconfig: Add config depends by default settings

scripts/kconfig/streamline_config.pl

index 4606cdfb859d59ac71a8e6d353a33d6f2a7110a0..31331723e810746d08f46c01928c20b2555018a8 100644 (file)
@@ -219,6 +219,13 @@ sub read_kconfig {
            $depends{$config} = $1;
        } elsif ($state eq "DEP" && /^\s*depends\s+on\s+(.*)$/) {
            $depends{$config} .= " " . $1;
+       } elsif ($state eq "DEP" && /^\s*def(_(bool|tristate)|ault)\s+(\S.*)$/) {
+           my $dep = $3;
+           if ($dep !~ /^\s*(y|m|n)\s*$/) {
+               $dep =~ s/.*\sif\s+//;
+               $depends{$config} .= " " . $dep;
+               dprint "Added default depends $dep to $config\n";
+           }
 
        # Get the configs that select this config
        } elsif ($state ne "NONE" && /^\s*select\s+(\S+)/) {