mirror of
https://github.com/openwrt/openwrt.git
synced 2025-02-06 02:59:27 +00:00
build: add support to && in DEPENDS
Adds support to && operand in DEPENDS. Also, fixes generation of || dependencies by scripts/package-metadata.pl. The precedence order from higher to lower is && then ||. Use of parentheses to change the order is not supported. As before, they are silently ignored. Use them for readability only. Signed-off-by: Eneas U de Queiroz <cote2004-github@yahoo.com> Signed-off-by: Christian Lamparter <chunkeey@gmail.com> [DMARC removal]
This commit is contained in:
parent
f22ef1f1de
commit
a41f474d17
@ -35,7 +35,8 @@ PARENR :=)
|
|||||||
|
|
||||||
dep_split=$(subst :,$(space),$(1))
|
dep_split=$(subst :,$(space),$(1))
|
||||||
dep_rem=$(subst !,,$(subst $(strip $(PARENL)),,$(subst $(strip $(PARENR)),,$(word 1,$(call dep_split,$(1))))))
|
dep_rem=$(subst !,,$(subst $(strip $(PARENL)),,$(subst $(strip $(PARENR)),,$(word 1,$(call dep_split,$(1))))))
|
||||||
dep_confvar=$(strip $(foreach cond,$(subst ||, ,$(call dep_rem,$(1))),$(CONFIG_$(cond))))
|
dep_and=dep_and_res:=$$(and $(subst $(space),$(comma),$(foreach cond,$(subst &&, ,$(1)),$$(CONFIG_$(cond)))))
|
||||||
|
dep_confvar=$(strip $(foreach cond,$(subst ||, ,$(call dep_rem,$(1))),$(eval $(call dep_and,$(cond)))$(dep_and_res)))
|
||||||
dep_pos=$(if $(call dep_confvar,$(1)),$(call dep_val,$(1)))
|
dep_pos=$(if $(call dep_confvar,$(1)),$(call dep_val,$(1)))
|
||||||
dep_neg=$(if $(call dep_confvar,$(1)),,$(call dep_val,$(1)))
|
dep_neg=$(if $(call dep_confvar,$(1)),,$(call dep_val,$(1)))
|
||||||
dep_if=$(if $(findstring !,$(1)),$(call dep_neg,$(1)),$(call dep_pos,$(1)))
|
dep_if=$(if $(findstring !,$(1)),$(call dep_neg,$(1)),$(call dep_pos,$(1)))
|
||||||
|
@ -358,14 +358,30 @@ sub gen_package_config() {
|
|||||||
print_package_overrides();
|
print_package_overrides();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub and_condition($) {
|
||||||
|
my $condition = shift;
|
||||||
|
my @spl_and = split('\&\&', $condition);
|
||||||
|
if (@spl_and == 1) {
|
||||||
|
return "\$(CONFIG_$spl_and[0])";
|
||||||
|
}
|
||||||
|
return "\$(and " . join (',', map("\$(CONFIG_$_)", @spl_and)) . ")";
|
||||||
|
}
|
||||||
|
|
||||||
|
sub gen_condition ($) {
|
||||||
|
my $condition = shift;
|
||||||
|
# remove '!()', just as include/package-ipkg.mk does
|
||||||
|
$condition =~ s/[()!]//g;
|
||||||
|
return join("", map(and_condition($_), split('\|\|', $condition)));
|
||||||
|
}
|
||||||
|
|
||||||
sub get_conditional_dep($$) {
|
sub get_conditional_dep($$) {
|
||||||
my $condition = shift;
|
my $condition = shift;
|
||||||
my $depstr = shift;
|
my $depstr = shift;
|
||||||
if ($condition) {
|
if ($condition) {
|
||||||
if ($condition =~ /^!(.+)/) {
|
if ($condition =~ /^!(.+)/) {
|
||||||
return "\$(if \$(CONFIG_$1),,$depstr)";
|
return "\$(if " . gen_condition($1) . ",,$depstr)";
|
||||||
} else {
|
} else {
|
||||||
return "\$(if \$(CONFIG_$condition),$depstr)";
|
return "\$(if " . gen_condition($condition) . ",$depstr)";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return $depstr;
|
return $depstr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user