|
@@ -0,0 +1,53 @@
|
|
|
+MAKEFLAGS += -R -r
|
|
|
+
|
|
|
+CROSS = riscv32-unknown-elf-
|
|
|
+CC = $(CROSS)gcc
|
|
|
+LD = $(CROSS)ld
|
|
|
+OBJCOPY = $(CROSS)objcopy
|
|
|
+BIN2MEM = hexdump -v -e '1/4 "%08x" 7/4 " %08x" "\n"'
|
|
|
+CFLAGS = -march=rv32imc -O2 -ggdb3 -mabi=ilp32 \
|
|
|
+ -mshorten-memrefs -mno-strict-align
|
|
|
+LDFLAGS = --section-start=.init=0 -z common-page-size=16 -z max-page-size=16
|
|
|
+
|
|
|
+# Delete output files on error
|
|
|
+.DELETE_ON_ERROR:
|
|
|
+
|
|
|
+# Don't delete intermediate files
|
|
|
+.SECONDARY:
|
|
|
+
|
|
|
+all: boot.hex
|
|
|
+
|
|
|
+boot.elf: head.o hello.o
|
|
|
+
|
|
|
+%.hex: %.elf
|
|
|
+ $(OBJCOPY) -O ihex $< $@
|
|
|
+
|
|
|
+%.mem: %.bin
|
|
|
+ $(BIN2MEM) $< > $@
|
|
|
+
|
|
|
+%.bin: %.elf
|
|
|
+ $(OBJCOPY) -O binary $< $@
|
|
|
+
|
|
|
+%.elf:
|
|
|
+ $(LD) $(LDFLAGS) -o $@ $^
|
|
|
+
|
|
|
+%.o: %.c
|
|
|
+ $(CC) $(CFLAGS) -c -o $@ $<
|
|
|
+
|
|
|
+%.s: %.c
|
|
|
+ $(CC) $(CFLAGS) -S -o $@ $<
|
|
|
+
|
|
|
+%.i: %.c
|
|
|
+ $(CC) $(CFLAGS) -E -o $@ $<
|
|
|
+
|
|
|
+%.o: %.S
|
|
|
+ $(CC) $(CFLAGS) -c -o $@ $<
|
|
|
+
|
|
|
+%.s: %.S
|
|
|
+ $(CC) $(CFLAGS) -E -o $@ $<
|
|
|
+
|
|
|
+clean:
|
|
|
+ rm -f *.o *.i *.s *.elf *.bin
|
|
|
+
|
|
|
+spotless: clean
|
|
|
+ rm -f *.mem *.hex
|