Makefile 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. export PATH := $(CURDIR)/tools/gnu/bin:$(PATH)
  2. CROSS = riscv32-unknown-elf-
  3. CC = $(CROSS)gcc
  4. LD = $(CROSS)ld
  5. OBJCOPY = $(CROSS)objcopy
  6. PERL = perl
  7. INCLUDE = -I. -I./include
  8. include ../riscv-opts.mk
  9. CPPFLAGS = $(INCLUDE) $(riscv_flags)
  10. CFLAGS = $(CPPFLAGS)
  11. SFLAGS = $(CPPFLAGS) -D__ASSEMBLY__
  12. LDFLAGS = $(CFLAGS) \
  13. -Wl,--section-start=.init=0 -Wl,-q \
  14. -Wl,-z,common-page-size=16 -Wl,-z,max-page-size=16
  15. # Delete output files on error
  16. .DELETE_ON_ERROR:
  17. # Don't delete intermediate files
  18. .SECONDARY:
  19. all: boot.mif
  20. # Generate MIF file for 2Kx32 RAM
  21. boot_depth := 2048
  22. boot_width := 32
  23. boot_stride := 1
  24. boot.elf: head.o hello.o
  25. %.mif: %.bin bin2mif.pl
  26. $(PERL) bin2mif.pl $< $@ $($*_depth) $($*_width) $($*_stride)
  27. %.hex: %.elf
  28. $(OBJCOPY) -O ihex $< $@
  29. %.mem: %.bin
  30. $(BIN2MEM) $< > $@
  31. %.bin: %.elf
  32. $(OBJCOPY) -O binary $< $@
  33. %.elf:
  34. $(CC) $(LDFLAGS) -o $@ $^
  35. %.o: %.c
  36. $(CC) $(CFLAGS) $(CFLAGS_$<) -c -o $@ $<
  37. %.s: %.c
  38. $(CC) $(CFLAGS) $(CFLAGS_$<) -S -o $@ $<
  39. %.i: %.c
  40. $(CC) $(CFLAGS) $(CFLAGS_$<) -E -o $@ $<
  41. %.o: %.S
  42. $(CC) $(SFLAGS) $(SFLAGS_$<) -c -o $@ $<
  43. %.s: %.S
  44. $(CC) $(SFLAGS) $(SFLAGS_$<) -E -o $@ $<
  45. clean:
  46. rm -f *.o *.i *.s *.elf *.bin
  47. spotless: clean
  48. rm -f *.mem *.hex *.mif