|  | @@ -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
 |