my %prompts;
 my %objects;
 my %config2kfile;
+my %defaults;
 my $var;
 my $iflevel = 0;
 my @ifdeps;
            $depends{$config} .= " " . $1;
        } elsif ($state ne "NONE" && /^\s*def(_(bool|tristate)|ault)\s+(\S.*)$/) {
            my $dep = $3;
+            $defaults{$config} = 1;
            if ($dep !~ /^\s*(y|m|n)\s*$/) {
                $dep =~ s/.*\sif\s+//;
                $depends{$config} .= " " . $dep;
 
     # If no possible config selected this, then something happened.
     if (!defined($next_config)) {
-       print STDERR "WARNING: $config is required, but nothing in the\n";
-       print STDERR "  current config selects it.\n";
+
+       # Some config options have no prompt, and nothing selects them, but
+       # they stay turned on once the final checks for the configs
+       # are done. These configs have a default option, so turn off the
+       # warnings for configs with default options.
+       if (!defined($defaults{$config})) {
+           print STDERR "WARNING: $config is required, but nothing in the\n";
+           print STDERR "  current config selects it.\n";
+       }
+
        return;
     }