blob: c30c5c733dac75dc7798b1b9316aa98d7488ea03 [file] [log] [blame]
OUTPREFIX ?= $(abspath .)/
ROOTDIR := $(abspath $(shell git rev-parse --show-toplevel))
SHODANROOTDIR := $(abspath $(ROOTDIR)/../..)
SRCDIR := $(abspath .)
BUILDDIR := $(OUTPREFIX)build
CFLAGS += -Wall
CFLAGS += -Werror
CFLAGS += -std=gnu11
CFLAGS += -march=rv32imfv
CFLAGS += -I${ROOTDIR}/springbok/include
CFLAGS += -O3 -g3 -ggdb
CFLAGS += -ffreestanding
CFLAGS += -ffunction-sections
CFLAGS += -fstack-usage
CFLAGS += -mstrict-align
LDFLAGS += -nostartfiles
LDFLAGS += -specs=nano.specs
LDFLAGS += -Wl,--gc-sections
LDFLAGS += -Wl,--print-memory-usage
LDFLAGS += -Wl,-Map=${BUILDDIR}/hello_vec.map
LDFLAGS += -T../springbok/matcha.ld
CC := ${SHODANROOTDIR}/cache/toolchain_vp/bin/riscv32-unknown-elf-gcc
${BUILDDIR}/hello_vec.elf: ${BUILDDIR}/main.o ${BUILDDIR}/springbok_gloss.o ${BUILDDIR}/Reset_Handler.o ${BUILDDIR}/crt0.o
mkdir -p $(dir $@)
${CC} ${CFLAGS} $^ ${LDFLAGS} -o $@
@cat ${BUILDDIR}/hello_vec.map | awk '/\.heap/ {printf("%16s: %13s\n", "heap (reserved)", int(strtonum($$3)/1024) " KB")} /\.stack/ {printf("%16s: %13s\n", "stack (reserved)", int(strtonum($$3)/1024) " KB")}'
${BUILDDIR}/main.o: ${SRCDIR}/main.c ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CC} ${CFLAGS} -c $< -o $@
${BUILDDIR}/springbok_gloss.o: ${ROOTDIR}/springbok/springbok_gloss.c ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CC} ${CFLAGS} -c $< -o $@
${BUILDDIR}/Reset_Handler.o: ${ROOTDIR}/springbok/Reset_Handler.c ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CC} ${CFLAGS} -c $< -o $@
${BUILDDIR}/crt0.o: ${ROOTDIR}/springbok/crt0.s ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CC} ${CFLAGS} -c $< -o $@
.PHONY: clean
clean:
rm -rf ${BUILDDIR}