|
@@ -5,9 +5,19 @@ CC = $(CROSS)gcc
|
|
|
LD = $(CROSS)ld
|
|
|
OBJCOPY = $(CROSS)objcopy
|
|
|
PERL = perl
|
|
|
-CFLAGS = -march=rv32imc -O2 -ggdb3 -mabi=ilp32 \
|
|
|
+INCLUDE = -I. -I./include
|
|
|
+CPPFLAGS = $(INCLUDE) \
|
|
|
+ -march=rv32imc -mabi=ilp32 -mdiv -Os -ggdb3 \
|
|
|
+ -fwrapv -fvisibility=hidden -fno-strict-aliasing \
|
|
|
+ -frename-registers \
|
|
|
-mshorten-memrefs -mno-strict-align
|
|
|
-LDFLAGS = --section-start=.init=0 -z common-page-size=16 -z max-page-size=16
|
|
|
+# These require newlib to be built with the same options; would be nice
|
|
|
+CPPFLAGS_NOT = -fshort-enums -fshort-wchar
|
|
|
+CFLAGS = $(CPPFLAGS)
|
|
|
+SFLAGS = $(CPPFLAGS) -D__ASSEMBLY__
|
|
|
+LDFLAGS = $(CFLAGS) --specs=nano.specs \
|
|
|
+ -Wl,--section-start=.init=0 -Wl,-q \
|
|
|
+ -Wl,-z,common-page-size=16 -Wl,-z,max-page-size=16
|
|
|
|
|
|
# Delete output files on error
|
|
|
.DELETE_ON_ERROR:
|
|
@@ -17,11 +27,13 @@ LDFLAGS = --section-start=.init=0 -z common-page-size=16 -z max-page-size=16
|
|
|
|
|
|
all: boot.mif
|
|
|
|
|
|
-boot.elf: head.o hello.o
|
|
|
+# Generate MIF files for 4 8×2K RAMs
|
|
|
boot_depth := 2048
|
|
|
boot_width := 8
|
|
|
boot_stride := 4
|
|
|
|
|
|
+boot.elf: head.o hello.o
|
|
|
+
|
|
|
%.mif: %.bin bin2mif.pl
|
|
|
$(PERL) bin2mif.pl $< $@ $($*_depth) $($*_width) $($*_stride)
|
|
|
|
|
@@ -35,22 +47,22 @@ boot_stride := 4
|
|
|
$(OBJCOPY) -O binary $< $@
|
|
|
|
|
|
%.elf:
|
|
|
- $(LD) $(LDFLAGS) -o $@ $^
|
|
|
+ $(CC) $(LDFLAGS) -o $@ $^
|
|
|
|
|
|
%.o: %.c
|
|
|
- $(CC) $(CFLAGS) -c -o $@ $<
|
|
|
+ $(CC) $(CFLAGS) $(CFLAGS_$<) -c -o $@ $<
|
|
|
|
|
|
%.s: %.c
|
|
|
- $(CC) $(CFLAGS) -S -o $@ $<
|
|
|
+ $(CC) $(CFLAGS) $(CFLAGS_$<) -S -o $@ $<
|
|
|
|
|
|
%.i: %.c
|
|
|
- $(CC) $(CFLAGS) -E -o $@ $<
|
|
|
+ $(CC) $(CFLAGS) $(CFLAGS_$<) -E -o $@ $<
|
|
|
|
|
|
%.o: %.S
|
|
|
- $(CC) $(CFLAGS) -c -o $@ $<
|
|
|
+ $(CC) $(SFLAGS) $(SFLAGS_$<) -c -o $@ $<
|
|
|
|
|
|
%.s: %.S
|
|
|
- $(CC) $(CFLAGS) -E -o $@ $<
|
|
|
+ $(CC) $(SFLAGS) $(SFLAGS_$<) -E -o $@ $<
|
|
|
|
|
|
clean:
|
|
|
rm -f *.o *.i *.s *.elf *.bin
|