mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-17 05:12:57 +01:00
make: dedup USEMODULE_INCLUDES w/o shelling out
Currently, `USEMODULE_INCLUDES` is deduplicated using a combination of `tr` and `awk`. The proposed method achieves a deduplication (no sorting) without the need to shell out by using make internals only.
This commit is contained in:
parent
6244ce4f4e
commit
202e73dcdf
@ -327,7 +327,15 @@ $(info $(USEPKG:%=$(RIOTPKG)/%/Makefile.include))
|
|||||||
.PHONY: $(USEPKG:%=$(RIOTPKG)/%/Makefile.include)
|
.PHONY: $(USEPKG:%=$(RIOTPKG)/%/Makefile.include)
|
||||||
-include $(USEPKG:%=$(RIOTPKG)/%/Makefile.include)
|
-include $(USEPKG:%=$(RIOTPKG)/%/Makefile.include)
|
||||||
|
|
||||||
USEMODULE_INCLUDES_ = $(shell echo $(USEMODULE_INCLUDES) | tr ' ' '\n' | awk '!a[$$0]++' | tr '\n' ' ')
|
# Deduplicate includes without sorting them
|
||||||
|
# see https://stackoverflow.com/questions/16144115/makefile-remove-duplicate-words-without-sorting
|
||||||
|
define uniq =
|
||||||
|
$(eval seen :=)
|
||||||
|
$(foreach _,$1,$(if $(filter $_,$(seen)),,$(eval seen += $_)))
|
||||||
|
$(seen)
|
||||||
|
endef
|
||||||
|
|
||||||
|
USEMODULE_INCLUDES_ = $(strip $(call uniq,$(USEMODULE_INCLUDES)))
|
||||||
|
|
||||||
INCLUDES += $(USEMODULE_INCLUDES_:%=-I%)
|
INCLUDES += $(USEMODULE_INCLUDES_:%=-I%)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user