parent
24ea59f8bb
commit
3e0210d975
|
@ -0,0 +1,81 @@
|
||||||
|
|
||||||
|
ARCH=riscv64-unknown-elf
|
||||||
|
GNU_DIR=$(HOME)/riscv/riscv/
|
||||||
|
GNU_BIN=$(GNU_DIR)/bin
|
||||||
|
|
||||||
|
|
||||||
|
CC=$(GNU_BIN)/$(ARCH)-gcc
|
||||||
|
CXX=$(GNU_BIN)/$(ARCH)-g++
|
||||||
|
AS=$(GNU_BIN)/$(ARCH)-as
|
||||||
|
LD=$(GNU_BIN)/$(ARCH)-ld
|
||||||
|
OBJCOPY=$(GNU_BIN)/$(ARCH)-objcopy
|
||||||
|
OBJDUMP=$(GNU_BIN)/$(ARCH)-objdump
|
||||||
|
SIZE=$(GNU_BIN)/$(ARCH)-size
|
||||||
|
AR=$(GNU_BIN)/$(ARCH)-ar
|
||||||
|
RANLIB=$(GNU_BIN)/$(ARCH)-ranlib
|
||||||
|
|
||||||
|
|
||||||
|
CFLAGS+=-ffreestanding
|
||||||
|
CFLAGS+=-fno-pic
|
||||||
|
CFLAGS+=-march=rv32i -mabi=ilp32
|
||||||
|
CFLAGS+= -g
|
||||||
|
|
||||||
|
|
||||||
|
LDFLAGS+=-nostdlib
|
||||||
|
LDFLAGS+=-Wl,-Ttext=0x00000000
|
||||||
|
|
||||||
|
# see: https://github.com/riscv/riscv-gcc/issues/120
|
||||||
|
#LDFLAGS+=-Wl,--no-relax
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ASFLAGS+=$(CFLAGS)
|
||||||
|
CXXFLAGS+=$(CFLAGS)
|
||||||
|
|
||||||
|
CLEAN_DIRS=$(SUBDIRS:%=clean-%)
|
||||||
|
ALL_DIRS=$(SUBDIRS:%=all-%)
|
||||||
|
|
||||||
|
OBJDUMPFLAGS+=-Mnumeric,no-aliases
|
||||||
|
|
||||||
|
.PHONY: all clean world $(CLEAN_DIRS) $(ALL_DIRS)
|
||||||
|
|
||||||
|
|
||||||
|
%.bin : %
|
||||||
|
$(OBJCOPY) $< -O binary $@
|
||||||
|
|
||||||
|
%.lst : %
|
||||||
|
$(OBJDUMP) $(OBJDUMPFLAGS) -dr --disassemble-all $< > $<.lst
|
||||||
|
|
||||||
|
% : %.o
|
||||||
|
$(LINK.cc) $(LDFLAGS) -o $@ $^ $(LDLIBS)
|
||||||
|
$(SIZE) -x -A $@
|
||||||
|
|
||||||
|
%.s: %.c
|
||||||
|
$(COMPILE.c) -S -o $@ $<
|
||||||
|
|
||||||
|
%.s: %.cc
|
||||||
|
$(COMPILE.cc) -S -o $@ $<
|
||||||
|
|
||||||
|
%.o: %.c
|
||||||
|
$(COMPILE.c) -o $@ $<
|
||||||
|
|
||||||
|
%.o: %.cc
|
||||||
|
$(COMPILE.cc) -o $@ $<
|
||||||
|
|
||||||
|
%.srec: %
|
||||||
|
$(OBJCOPY) $< -O srec $@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
all:: $(ALL_DIRS)
|
||||||
|
|
||||||
|
clean:: $(CLEAN_DIRS)
|
||||||
|
|
||||||
|
$(ALL_DIRS)::
|
||||||
|
$(MAKE) -C $(@:all-%=%) all
|
||||||
|
|
||||||
|
$(CLEAN_DIRS)::
|
||||||
|
$(MAKE) -C $(@:clean-%=%) clean
|
||||||
|
|
||||||
|
world:: clean all
|
|
@ -0,0 +1,27 @@
|
||||||
|
TOP=./
|
||||||
|
include $(TOP)/Make.rules
|
||||||
|
|
||||||
|
LDLIBS=
|
||||||
|
#CFLAGS+=-O0 -g
|
||||||
|
# CFLAGS+=-Og -ggdb3
|
||||||
|
CFLAGS+=-O0 -ggdb3
|
||||||
|
|
||||||
|
LDFLAGS+=-Wl,--no-relax
|
||||||
|
LDFLAGS+=-Wl,-Ttext=0x80000000,-Tdata=0x80010000
|
||||||
|
# LDFLAGS+=-T murax_128k_ram.ld
|
||||||
|
|
||||||
|
PROGS=prog prog.bin prog.lst
|
||||||
|
|
||||||
|
all:: $(PROGS)
|
||||||
|
|
||||||
|
prog: _crt0.o _rvmain.o myfunc.o
|
||||||
|
$(LINK.cc) -o $@ $^ $(LDLIBS)
|
||||||
|
$(SIZE) -A -x $@
|
||||||
|
|
||||||
|
clean::
|
||||||
|
rm -f $(PROGS) *.o *.s *.lst *.bin *.srec *.dis
|
||||||
|
|
||||||
|
.PHONY: run
|
||||||
|
run: prog.bin
|
||||||
|
../../../src/rvddt -l0x3000 -f prog.bin
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
size_t strlen(const char *str) {
|
||||||
|
size_t len = 0;
|
||||||
|
while (*str++) {
|
||||||
|
len++; }
|
||||||
|
return len;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int main () {
|
||||||
|
const char *string = "Piotrek";
|
||||||
|
size_t length = strlen(string);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue