Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Compiler flags
- ASFLAGS +=
- CFLAGS += -g -O0
- LDFLAGS +=
- #Binaries and common object files
- BIN = a.elf b.elf
- OBJ-COMMON = main.c.o simulation.c.o
- #Source files
- ASMFILES = $(wildcard *.S)
- CFILES = $(wildcard *.c)
- #Directories
- BINDIR = bin/
- DEPDIR = .deps
- df = $(DEPDIR)/$(*F)
- #Targets that do match a file name
- .PHONY: all clean
- #Keep object files when done
- .SECONDARY: $(addprefix $(BINDIR),$(OBJ-COMMON) $(subst elf,o,$(BIN)))
- #Phony targets
- all: $(addprefix $(BINDIR),$(BIN))
- clean:
- $(RM) -R $(BINDIR)
- #Link binaries. Link with binary specific object file and common object files
- $(BINDIR)%.elf: $(addprefix $(BINDIR),%.c.o $(OBJ-COMMON)) | $(BINDIR)
- $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS)
- #Compile C files, resolve header dependencies
- $(BINDIR)%.c.o: %.c | $(DEPDIR) $(BINDIR)
- $(CC) -c $(CFLAGS) -MD -o $@ $<
- #Magic to generate header dependecy file
- @cp $(BINDIR)$*.c.d $(df).c.P; sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' -e '/^$$/ d' -e 's/$$/ :/' < $(BINDIR)$*.c.d >> $(df).c.P; $(RM) $(BINDIR)$*.c.d
- #Compile Assembly files, resolve header dependencies
- $(BINDIR)%.S.o: %.S | $(DEPDIR) $(BINDIR)
- $(CC) -c $(ASFLAGS) -MD -o $@ $<
- #Magic to generate header dependecy file
- cp $(BINDIR)$*.S.d $(df).S.P; sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' -e '/^$$/ d' -e 's/$$/ :/' < $(BINDIR)$*.S.d >> $(df).S.P; $(RM) $(BINDIR)$*.S.d
- #Directories
- $(DEPDIR):
- @mkdir -p $@
- $(BINDIR):
- @mkdir -p $@
- #Include header dependency files
- -include $(CFILES:%.c=$(DEPDIR)/%.c.P)
- -include $(ASMFILES:%.S=$(DEPDIR)/%.S.P)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement