diff options
-rw-r--r-- | Makefile | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..3c2a981 --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +TARGET?=virt +CROSS_COMPILE?=riscv64-unknown-elf- + +BUILDDIR=build/${TARGET} +TARGETDIR=mainboard/${TARGET} + +CFLAGS=-nostdlib -ffreestanding -mcmodel=medany + +.if !exists(${TARGETDIR}/conf/mainboard.mk) +.error 'ERROR: invalid target "${TARGET}"' +.else +.include <${TARGETDIR}/conf/mainboard.mk> +.endif + +all: ${BUILDDIR}/kernel.elf + +clean: + rm -rf ${BUILDDIR} + +${BUILDDIR}/kernel.elf: ${SRC} + mkdir -p ${BUILDDIR} + ${CROSS_COMPILE}gcc ${SRC} \ + -Wl,--defsym=LOAD_ADDR=${LOAD_ADDR}\ + -Wl,--defsym=PAGE_SIZE=${PAGE_SIZE}\ + -Wl,--defsym=NPROC=${NPROC}\ + -DPAGE_SIZE=${PAGE_SIZE}\ + ${CFLAGS} -T kernel/lds/kernel.ld ${LDFLAGS}\ + -o $@ + +.PHONY: all clean |