define SRC_LANG_RULE =
$(if $($1),,$(eval $1 := t)\
$(eval MOD := $(filter $(MODULES),$(firstword $(subst /, ,$(subst $(SRC_DIR),,$(dir $1))))))\
-$(eval FLG := $(MOD:%=-I% ))\
+$(eval FLG := $(MOD:%=-I$(SRC_DIR)/% ))\
$(if $(wildcard $1),
$(eval DEPS := $(filter-out \ %:,$(shell $($2_C) $(FLG) -M -MG $1)))\
$(eval DDEPS := $(filter $(DRIVER_DIR:$(SRC_DIR)/%=%/%),$(DEPS)))\
# a single locally-linked (no external -L libs) object (for simplified linking
# modules as static libs).#######################################################
define MODULE_ARCRULE =
-$(eval ARCDEPS := $(filter $1/%.$(c_OBJ),$(foreach lang,$(LANGS),$($(lang)_MOD_TRG))))\
+$(eval ARCDEPS := $(filter $(SRC_DIR)/$1/%.$(c_OBJ),$(foreach lang,$(LANGS),$($(lang)_MOD_TRG))))\
$(eval MAKE_TARGETS+= $1.$(c_AROBJ))\
$(SRC_DIR)/$1.$(c_AROBJ): $(ARCDEPS)