# ---- Push on stack ---- SP := $(SP).x DIRSTACK_$(SP) := $(d) d := $(DIR) # Iterate through subdirectory tree # ... # Local variables SRCS_$(d) := $(wildcard $(d)/*.c) ASMS_$(d) := $(wildcard $(d)/*.s) OBJS_$(d) := $(SRCS_$(d):.c=.o) OBJS_$(d) += $(ASMS_$(d):.s=.o) OBJS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(OBJS_$(d))) DEPS_$(d) := $(OBJS_$(d):.o=.d) OBJS := $(OBJS) $(OBJS_$(d)) DEPS := $(DEPS) $(DEPS_$(d)) LIBS_$(d) := $(d)/libnbn.a LIBS_$(d) := $(patsubst $(SRC_DIR)/%, $(OBJ_DIR)/%, $(LIBS_$(d))) BINS_$(d) := LIBS := $(LIBS) $(LIBS_$(d)) # Local rules # $(LIBS_$(d)) := TGTFLAGS := # $(LIBS_$(d)) := TGTINCS := # $(LIBS_$(d)) := TGTLIBS := $(LIBS_$(d)): $(OBJS_$(d)) $(ARCHIVE) # ---- Pop off stack ---- -include $(DEPS_$(d)) d := $(DIRSTACK_$(SP)) SP := $(basename $(SP))