diff --git a/makefiles/features_check.inc.mk b/makefiles/features_check.inc.mk index 9f010b36ce..907be7b1ca 100644 --- a/makefiles/features_check.inc.mk +++ b/makefiles/features_check.inc.mk @@ -44,17 +44,18 @@ FEATURES_USED_SO_FAR := $(sort $(FEATURES_REQUIRED) $(FEATURES_OPTIONAL_USED)) # ==> If one (or more) already used features is listed in item, this (or # one of these) will be in the front of "tmp" and be taken # ==> If one (or more) usable features is listed in item, this will come -# afterwards. If no no feature in item is used so for, one of the +# afterwards. If no feature in item is used so far, one of the # features supported and listed in item will be picked -# ==> At the end of the list item itself (with pipes between features) is the -# last item in "tmp". If no feature is item is supported or used, this -# will be the only item in "tmp" and be picked +# ==> At the end of the list, feature alternatives in item itself are added. +# If no feature in item is already used or usable, the first alternative is +# just added, triggering a warning about a feature being missing or +# conflicting later on. FEATURES_REQUIRED_ONE_OUT_OF := $(foreach item,\ $(FEATURES_REQUIRED_ANY),\ $(word 1,\ $(filter $(FEATURES_USED_SO_FAR),$(subst |, ,$(item)))\ $(filter $(FEATURES_USABLE),$(subst |, ,$(item)))\ - $(item))) + $(subst |, ,$(item)))) # Features that are required by the application but not provided by the BSP # Having features missing may case the build to fail. diff --git a/makefiles/tests/feature_resolution/test-complex-failure.mk b/makefiles/tests/feature_resolution/test-complex-failure.mk index b371a89156..8c44e40ccd 100644 --- a/makefiles/tests/feature_resolution/test-complex-failure.mk +++ b/makefiles/tests/feature_resolution/test-complex-failure.mk @@ -7,9 +7,9 @@ FEATURES_BLACKLIST := a FEATURES_CONFLICT := f:e c:d # expected results -EXPECTED_FEATURES_USED := a|h|i b c d -EXPECTED_FEATURES_MISSING := a|h|i -EXPECTED_FEATURES_USED_BLACKLISTED := +EXPECTED_FEATURES_USED := a b c d +EXPECTED_FEATURES_MISSING := +EXPECTED_FEATURES_USED_BLACKLISTED := a EXPECTED_FEATURES_CONFLICTING := c d include Makefile.test diff --git a/makefiles/tests/feature_resolution/test-required-any-fail.mk b/makefiles/tests/feature_resolution/test-required-any-fail.mk index 137614e95e..aa7b4dabf6 100644 --- a/makefiles/tests/feature_resolution/test-required-any-fail.mk +++ b/makefiles/tests/feature_resolution/test-required-any-fail.mk @@ -7,8 +7,8 @@ FEATURES_BLACKLIST := FEATURES_CONFLICT := # expected results -EXPECTED_FEATURES_USED := d|b|a -EXPECTED_FEATURES_MISSING := d|b|a +EXPECTED_FEATURES_USED := d +EXPECTED_FEATURES_MISSING := d EXPECTED_FEATURES_USED_BLACKLISTED := EXPECTED_FEATURES_CONFLICTING :=