.RECIPEPREFIX = > S_OBJECTS = $(patsubst %.s,$(LOCAL_BUILD)/%.s.o,$(wildcard *.s)) C_OBJECTS = $(patsubst %.c,$(LOCAL_BUILD)/%.c.o,$(wildcard *.c)) OBJECTS = $(S_OBJECTS) $(C_OBJECTS) LOCAL_BUILD = $(GLOBAL_BUILD)/mm SUBDIRS = $(wildcard */.) .PHONY: build build: folder $(SUBDIRS) $(OBJECTS) > $(GCC_PREFIX)ld $(wildcard $(LOCAL_BUILD)/*.o) -r -o $(GLOBAL_BUILD)/mm.o --oformat elf32-i386 .PHONY: folder folder: > @mkdir -p $(LOCAL_BUILD) .PHONY: $(SUBDIRS) $(SUBDIRS): > make -C $@ GLOBAL_BUILD=$(LOCAL_BUILD) build $(LOCAL_BUILD)/%.s.o: %.s > $(GCC_PREFIX)as -o $@ $< $(LOCAL_BUILD)/%.c.o: %.c $(wildcard *.h) > $(GCC_PREFIX)gcc -c -I$(INCLUDE_DIR) --prefix=$(GCC_PREFIX) $(GCC_OPTIONS) -o $@ $<