tree-wide: fix assorted typos all over the place
[safe/jmp/linux-2.6] / scripts / kconfig / streamline_config.pl
index caac952..95984db 100644 (file)
 my $config = ".config";
 my $linuxpath = ".";
 
-open(CIN,$config) || die "Can't open current config file: $config";
+my $uname = `uname -r`;
+chomp $uname;
+
+my @searchconfigs = (
+       {
+           "file" => ".config",
+           "exec" => "cat",
+       },
+       {
+           "file" => "/proc/config.gz",
+           "exec" => "zcat",
+       },
+       {
+           "file" => "/boot/config-$uname",
+           "exec" => "cat",
+       },
+       {
+           "file" => "/boot/vmlinuz-$uname",
+           "exec" => "scripts/extract-ikconfig",
+           "test" => "scripts/extract-ikconfig",
+       },
+       {
+           "file" => "vmlinux",
+           "exec" => "scripts/extract-ikconfig",
+           "test" => "scripts/extract-ikconfig",
+       },
+       {
+           "file" => "/lib/modules/$uname/kernel/kernel/configs.ko",
+           "exec" => "scripts/extract-ikconfig",
+           "test" => "scripts/extract-ikconfig",
+       },
+       {
+           "file" => "kernel/configs.ko",
+           "exec" => "scripts/extract-ikconfig",
+           "test" => "scripts/extract-ikconfig",
+       },
+       {
+           "file" => "kernel/configs.o",
+           "exec" => "scripts/extract-ikconfig",
+           "test" => "scripts/extract-ikconfig",
+       },
+);
+
+sub find_config {
+    foreach my $conf (@searchconfigs) {
+       my $file = $conf->{"file"};
+
+       next if ( ! -f "$file");
+
+       if (defined($conf->{"test"})) {
+           `$conf->{"test"} $conf->{"file"} 2>/dev/null`;
+           next if ($?);
+       }
+
+       my $exec = $conf->{"exec"};
+
+       print STDERR "using config: '$file'\n";
+
+       open(CIN, "$exec $file |") || die "Failed to run $exec $file";
+       return;
+    }
+    die "No config file found";
+}
+
+find_config;
+
 my @makefiles = `find $linuxpath -name Makefile`;
 my %depends;
 my %selects;
@@ -256,18 +321,28 @@ my %setconfigs;
 # Finally, read the .config file and turn off any module enabled that
 # we could not find a reason to keep enabled.
 while(<CIN>) {
-       if (/^(CONFIG.*)=(m|y)/) {
-               if (defined($configs{$1})) {
-                   $setconfigs{$1} = $2;
-                   print;
-               } elsif ($2 eq "m") {
-                   print "# $1 is not set\n";
-               } else {
-                   print;
-               }
+
+    if (/CONFIG_IKCONFIG/) {
+       if (/# CONFIG_IKCONFIG is not set/) {
+           # enable IKCONFIG at least as a module
+           print "CONFIG_IKCONFIG=m\n";
+           # don't ask about PROC
+           print "# CONFIG_IKCONFIG_PROC is not set\n";
        } else {
-               print;
+           print;
        }
+       next;
+    }
+
+    if (/^(CONFIG.*)=(m|y)/) {
+       if (defined($configs{$1})) {
+           $setconfigs{$1} = $2;
+       } elsif ($2 eq "m") {
+           print "# $1 is not set\n";
+           next;
+       }
+    }
+    print;
 }
 close(CIN);