Blob


1 .SUFFIXES:
2 .SUFFIXES: .c .S .o .elf
4 TOP != pwd
5 PREFIX = /usr/local
6 TARGET = riscv64-unknown-linux-musl
7 CROSS = ./tools/bin/${TARGET}
9 include config.mk
11 COPT = -g -O2
12 CFLAGS = ${CFLAGS_OS} ${COPT} -std=c2x
13 LDFLAGS = ${LDFLAGS_OS} -lpthread
15 OBJ = src/linurv.o src/ecall.o src/cpu.o src/exec.o
16 T = asm
17 PROGS = examples/test.elf \
18 examples/echo.elf \
19 examples/cat.elf \
20 examples/hello.elf \
21 examples/asm.elf
23 all: linurv ${PROGS}
25 od: examples/$T.elf
26 ${CROSS}-objdump -d examples/$T.elf | less
28 run: linurv ${PROGS}
29 mkdir -p rootfs/bin
30 cp -f linurv rootfs/bin
31 cp -f ${PROGS} rootfs/bin
32 cp -f test.txt rootfs/
33 ${CHROOT} rootfs /bin/linurv /bin/$T.elf
35 distclean: clean
36 (cd tools; ${MAKE} distclean)
38 clean:
39 rm -f linurv src/*.o examples/*.elf *.core src/syscalls.h
40 rm -rf rootfs
42 install: linurv
43 mkdir -p ${DESTDIR}${PREFIX}/bin
44 cp -f linurv ${DESTDIR}${PREFIX}/bin/
47 linurv: ${OBJ}
48 ${CC} -o $@ ${OBJ} ${LDFLAGS}
50 src/ecall.o: src/syscalls.h
52 src/syscalls.h: src/syscalls.inc
53 sed 's/^\.set \(SYS_[a-z0-9_]*\), \([0-9]*\)$$/#define \1 \2/' \
54 < src/syscalls.inc > $@
56 .c.o:
57 ${CC} -c -o $@ $< ${CFLAGS}
60 .c.elf:
61 ${CROSS}-gcc -g -o $@ $< -Og
63 .S.elf:
64 ${CROSS}-gcc -g -o $@ $<