From 2e92008789a4f4161de924d41292e3ef39829b92 Mon Sep 17 00:00:00 2001
From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Date: Fri, 5 Oct 2007 21:44:43 +0000
Subject: [PATCH] allow targets to select/deselect config symbols

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9150 3c298f89-4303-0410-b956-a3cf2f4a3e73
---
 include/target.mk   |  1 +
 scripts/metadata.pl | 19 ++++++++++++++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/include/target.mk b/include/target.mk
index 0217fcff6..9ee369d9b 100644
--- a/include/target.mk
+++ b/include/target.mk
@@ -150,6 +150,7 @@ define BuildTargets/DumpCurrent
 	 echo 'Target-Path: $(subst $(TOPDIR)/,,$(PWD))'; \
 	 echo 'Target-Arch: $(ARCH)'; \
 	 echo 'Target-Features: $(FEATURES)'; \
+	 echo 'Target-Depends: $(DEPENDS)'; \
 	 echo 'Linux-Version: $(LINUX_VERSION)'; \
 	 echo 'Linux-Release: $(LINUX_RELEASE)'; \
 	 echo 'Linux-Kernel-Arch: $(LINUX_KARCH)'; \
diff --git a/scripts/metadata.pl b/scripts/metadata.pl
index aa5df6fb9..580e29ea0 100755
--- a/scripts/metadata.pl
+++ b/scripts/metadata.pl
@@ -25,7 +25,9 @@ sub parse_target_metadata() {
 			$target = {
 				id => $1,
 				conf => confstr($1),
-				profiles => []
+				profiles => [],
+				features => [],
+				depends => []
 			};
 			push @target, $target;
 		};
@@ -38,6 +40,7 @@ sub parse_target_metadata() {
 		/^Target-Path:\s*(.+)\s*$/ and $target->{path} = $1;
 		/^Target-Arch:\s*(.+)\s*$/ and $target->{arch} = $1;
 		/^Target-Features:\s*(.+)\s*$/ and $target->{features} = [ split(/\s+/, $1) ];
+		/^Target-Depends:\s*(.+)\s*$/ and $target->{depends} = [ split(/\s+/, $1) ];
 		/^Target-Description:/ and $target->{desc} = get_multiline(*FILE);
 		/^Linux-Version:\s*(.+)\s*$/ and $target->{version} = $1;
 		/^Linux-Release:\s*(.+)\s*$/ and $target->{release} = $1;
@@ -189,6 +192,20 @@ EOF
 		if ($target->{id} ne $target->{board}) {
 			print "\tselect TARGET_".$target->{boardconf}."\n";
 		}
+		foreach my $dep (@{$target->{depends}}) {
+			my $mode = "depends";
+			my $flags;
+			my $name;
+
+			$dep =~ /^([@\+\-]+)(.+)$/;
+			$flags = $1;
+			$name = $2;
+
+			$flags =~ /-/ and $mode = "deselect";
+			$flags =~ /\+/ and $mode = "select";
+			$flags =~ /@/ and print "\t$mode $name\n";
+		}
+		
 		print "$features$help\n\n"
 	}
 
-- 
2.20.1