From d69291c3a1eb3f8a3a4762bf17ab9b213fa98372 Mon Sep 17 00:00:00 2001
From: Kaspar Schleiser <kaspar@schleiser.de>
Date: Sat, 9 Sep 2017 01:10:59 +0200
Subject: [PATCH] make: handle optional features in Makefile.dep

---
 Makefile.dep             | 9 +++++++++
 makefiles/modules.inc.mk | 2 --
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/Makefile.dep b/Makefile.dep
index 364fb05545..302f028543 100644
--- a/Makefile.dep
+++ b/Makefile.dep
@@ -698,6 +698,15 @@ endif
 # include package dependencies
 -include $(USEPKG:%=$(RIOTPKG)/%/Makefile.dep)
 
+# remove required features from optional features
+FEATURES_OPTIONAL := $(filter-out $(FEATURES_REQUIRED),$(FEATURES_OPTIONAL))
+
+# add all optional but provided features to the list of used features
+FEATURES_USED := $(sort $(FEATURES_REQUIRED) $(filter $(FEATURES_OPTIONAL),$(FEATURES_PROVIDED)))
+
+# all periph features correspond to a periph submodule
+USEMODULE += $(filter periph_%,$(FEATURES_USED))
+
 # recursively catch transitive dependencies
 USEMODULE := $(sort $(USEMODULE))
 USEPKG := $(sort $(USEPKG))
diff --git a/makefiles/modules.inc.mk b/makefiles/modules.inc.mk
index 3b9744d042..ebaa211407 100644
--- a/makefiles/modules.inc.mk
+++ b/makefiles/modules.inc.mk
@@ -1,5 +1,3 @@
-USEMODULE := $(filter-out $(filter-out $(FEATURES_PROVIDED), $(FEATURES_OPTIONAL)), $(sort $(USEMODULE)))
-
 ED = $(addprefix FEATURE_,$(sort $(filter $(FEATURES_PROVIDED), $(FEATURES_REQUIRED))))
 ED += $(addprefix MODULE_,$(sort $(USEMODULE) $(USEPKG)))
 EXTDEFINES = $(addprefix -D,$(shell echo '$(ED)' | tr 'a-z-' 'A-Z_'))
-- 
GitLab