mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +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)
|
||||
-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%)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user