diff options
author | lars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-11-22 22:44:35 +0000 |
---|---|---|
committer | lars <lars@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2008-11-22 22:44:35 +0000 |
commit | 864b4e9b05725780004c9d40d36339eacc999988 (patch) | |
tree | 2236e37f39703a9815a5f8af022131e848f1f379 | |
parent | 938bc99f585c67cbd38edc274cc2baca6cf852e2 (diff) |
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
-rwxr-xr-x | scripts/metadata.pl | 16 |
1 files 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 <<EOF Available Commands: $0 target_config [file] Target metadata in Kconfig format - $0 package_mk [file] Package metadata in makefile format + $0 package_mk [file] Package metadata in makefile format $0 package_config [file] Package metadata in Kconfig format $0 kconfig [file] [config] Kernel config overrides |