From 864b4e9b05725780004c9d40d36339eacc999988 Mon Sep 17 00:00:00 2001 From: lars Date: Sat, 22 Nov 2008 22:44:35 +0000 Subject: Add support for negative conditional dependencies. Also add the condition of conditional dependencies to dependencies which are inherited form the conditional dependency. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13319 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- scripts/metadata.pl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 32370d50c..cfda69351 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -374,6 +374,7 @@ sub mconf_depends($$) { my $res; my $dep = shift; my $seen = shift; + my $condition = shift; $dep or $dep = {}; $seen or $seen = {}; @@ -383,11 +384,10 @@ sub mconf_depends($$) { my $m = "depends"; $depend =~ s/^([@\+]+)//; my $flags = $1; - my $condition; my $vdep; if ($depend =~ /^(.+):(.+)$/) { - $condition = $1; + $condition and $condition = "$condition && $1" or $condition = $1; $depend = $2; } next if $seen->{$depend}; @@ -400,13 +400,13 @@ sub mconf_depends($$) { # thus if FOO depends on other config options, these dependencies # will not be checked. To fix this, we simply emit all of FOO's # depends here as well. - $package{$depend} and mconf_depends($package{$depend}->{depends}, 1, $dep, $seen); + $package{$depend} and mconf_depends($package{$depend}->{depends}, 1, $dep, $seen, $condition); $m = "select"; next if $only_dep; }; $flags =~ /@/ or $depend = "PACKAGE_$depend"; - $condition and $depend = "$depend if $condition"; + $condition and ($m =~ /select/ and $depend = "$depend if $condition" or $depend = "!($condition) || $depend"); } $dep->{$depend} =~ /select/ or $dep->{$depend} = $m; } @@ -588,7 +588,11 @@ sub gen_package_mk() { $dep{$pkg->{src}."->".$idx} = 1; } if ($condition) { - $depline .= " \$(if \$(CONFIG_$condition),$depstr)"; + if ($condition =~ /^!(.+)/) { + $depline .= " \$(if \$(CONFIG_$1),,$depstr)"; + } else { + $depline .= " \$(if \$(CONFIG_$condition),$depstr)"; + } } else { $depline .= " $depstr"; } @@ -637,7 +641,7 @@ sub parse_command() { print <