$(foreach drv,$(DRIVERS),\
$(eval OTHERS := $(filter-out $(drv),$(DRIVERS)))\
$(eval $(drv)SRC := $(filter-out $(OTHERS:%=\%/%.o),$(OBJ)))\
-$(eval $(drv)-dSRC := $(filter-out $(OTHERS:%=\%/%-d.o),$(OBJ:%.o=%-d.o))))
+$(eval $(drv)-dSRC := $($(drv)SRC:%.o=%-d.o)))
# Unless cleaning, deps should be generated for each source file
ifeq (,$(filter clean,$(MAKECMDGOALS)))
# expansion:
# If we are cleaning, stop. Else print the result of calling '1'. Then, unless
# we are in -n mode, invoke the result of calling '1' in the shell
-$(if $(filter clean,$(MAKECMDGOALS)),,$(eval S2S += $$(info $$(call $$1,$$2,$$3)))\
-$(if $(filter n,$(MAKEFLAGS)),,$(eval S2S += $$(shell $$(call $$1,$$2,$$3)))))
+ifeq (,$(filter clean,$(MAKECMDGOALS)))
+S2S = $(info $(call $1,$2,$3))
+ifeq (,$(filter n,$(MAKEFLAGS)))
+S2S += $(shell $(call $1,$2,$3))
+endif
+endif
# Rules
.SECONDEXPANSION: