Advertisement
Guest User

Untitled

a guest
Mar 18th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 1.56 KB | None | 0 0
  1. #Compiler flags
  2. ASFLAGS +=
  3. CFLAGS += -g -O0
  4. LDFLAGS +=
  5.  
  6. #Binaries and common object files
  7. BIN = a.elf b.elf
  8. OBJ-COMMON = main.c.o simulation.c.o
  9.  
  10. #Source files
  11. ASMFILES = $(wildcard *.S)
  12. CFILES = $(wildcard *.c)
  13.  
  14. #Directories
  15. BINDIR = bin/
  16. DEPDIR = .deps
  17.  
  18. df = $(DEPDIR)/$(*F)
  19.  
  20. #Targets that do match a file name
  21. .PHONY: all clean
  22. #Keep object files when done
  23. .SECONDARY: $(addprefix $(BINDIR),$(OBJ-COMMON) $(subst elf,o,$(BIN)))
  24.  
  25. #Phony targets
  26. all: $(addprefix $(BINDIR),$(BIN))
  27.  
  28. clean:
  29.     $(RM) -R $(BINDIR)
  30.  
  31.  
  32. #Link binaries. Link with binary specific object file and common object files
  33. $(BINDIR)%.elf: $(addprefix $(BINDIR),%.c.o $(OBJ-COMMON)) | $(BINDIR)
  34.     $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS)
  35.  
  36. #Compile C files, resolve header dependencies
  37. $(BINDIR)%.c.o: %.c | $(DEPDIR) $(BINDIR)
  38.     $(CC) -c $(CFLAGS) -MD -o $@ $<
  39. #Magic to generate header dependecy file
  40.     @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
  41.  
  42. #Compile Assembly files, resolve header dependencies
  43. $(BINDIR)%.S.o: %.S | $(DEPDIR) $(BINDIR)
  44.     $(CC) -c $(ASFLAGS) -MD -o $@ $<
  45. #Magic to generate header dependecy file
  46.     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
  47.  
  48. #Directories
  49. $(DEPDIR):
  50.     @mkdir -p $@
  51.  
  52. $(BINDIR):
  53.     @mkdir -p $@
  54.  
  55. #Include header dependency files
  56. -include $(CFILES:%.c=$(DEPDIR)/%.c.P)
  57. -include $(ASMFILES:%.S=$(DEPDIR)/%.S.P)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement