diff --git a/rules.mk b/rules.mk
index 5c66dfde1a14942f3b220608c3a899f3db9605ba..4a0fa32e3554b124a5d687825220224df8558dc0 100644
--- a/rules.mk
+++ b/rules.mk
@@ -138,6 +138,10 @@ $(call shvar,$(1))=$$(call $(1))
 export $(call shvar,$(1))
 endef
 
+define confvar
+$(foreach v,$(1),$(if $($(v)),y,n))
+endef
+
 # file extension
 ext=$(word $(words $(subst ., ,$(1))),$(subst ., ,$(1)))
 
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index 914b5127b4ad1dbf61d88976bd371c2e6abccc2f..2898289bcc22dffe782e08fc3e3d80e98a8efa0d 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -173,6 +173,13 @@ sub target_name($) {
 	}
 }
 
+sub kver($) {
+	my $v = shift;
+	$v =~ tr/\./_/;
+	$v =~ /(\d+_\d+_\d+)(_\d+)?/ and $v = $1;
+	return $v;
+}
+
 sub print_target($) {
 	my $target = shift;
 	my $features = target_config_features(@{$target->{features}});
@@ -190,10 +197,12 @@ sub print_target($) {
 		undef $help;
 	}
 
+	my $v = kver($target->{version});
 	$confstr = <<EOF;
 config TARGET_$target->{conf}
 	bool "$target->{name}"
 	select LINUX_$kernel
+	select LINUX_$v
 EOF
 	if ($target->{subtarget}) {
 		$confstr .= "\tdepends TARGET_$target->{boardconf}\n";
@@ -296,6 +305,16 @@ EOF
 		$target->{subtarget} or	print "\t\tdefault \"".$target->{board}."\" if TARGET_".$target->{conf}."\n";
 	}
 
+	my %kver;
+	foreach my $target (@target) {
+		my $v = kver($target->{version});
+		next if $kver{$v};
+		$kver{$v} = 1;
+		print <<EOF;
+config LINUX_$v
+	bool
+EOF
+	}
 }
 
 my %dep_check;