2 .SUFFIXES: .c .S .o .elf
5 TARGET = riscv64-unknown-linux-musl
6 HOSTOS != if test -e 'config.mk.local'; then echo 'local'; else uname; fi
7 CROSS = ./tools/bin/${TARGET}
8 CONFIG = config.mk.${HOSTOS}
13 CFLAGS = ${CFLAGS_OS} ${COPT} -std=c2x
14 LDFLAGS = ${LDFLAGS_OS} -lpthread
16 OBJ = src/rvemu.o src/ecall.o src/cpu.o src/exec.o
18 PROGS = examples/test.elf \
27 ${CROSS}-objdump -d examples/$T.elf | less
31 cp -f rvemu rootfs/bin
32 cp -f ${PROGS} rootfs/bin
33 cp -f test.txt rootfs/
34 ${CHROOT} rootfs /bin/rvemu /bin/$T.elf
37 (cd tools; ${MAKE} distclean)
40 rm -f rvemu src/*.o examples/*.elf *.core src/syscalls.h
44 mkdir -p ${DESTDIR}${PREFIX}/bin
45 cp -f rvemu ${DESTDIR}${PREFIX}/bin/
49 ${CC} -o $@ ${OBJ} ${LDFLAGS}
51 src/ecall.o: src/syscalls.h
53 src/syscalls.h: src/syscalls.inc
54 sed 's/^\.set \(SYS_[a-z0-9_]*\), \([0-9]*\)$$/#define \1 \2/' \
55 < src/syscalls.inc > $@
58 ${CC} -c -o $@ $< ${CFLAGS}
62 ${CROSS}-gcc -g -o $@ $< -Og
65 ${CROSS}-gcc -g -o $@ $<