blob: 3b000db336fdcf4dc6a92cecf3a3515b87d5b20e [file] [log] [blame]
OUTPREFIX ?= $(abspath .)/
ROOTDIR := $(abspath $(shell git rev-parse --show-toplevel))
SHODANROOTDIR := $(abspath $(ROOTDIR)/../..)
SRCDIR := $(abspath .)
BUILDDIR := $(OUTPREFIX)build
CFLAGS += -std=gnu11
CCFLAGS += -std=gnu++11
CCFLAGS += -fno-exceptions
CXXFLAGS += -Wall
CXXFLAGS += -Werror
CXXFLAGS += -march=rv32imv
CXXFLAGS += -I${ROOTDIR}/springbok/include
CXXFLAGS += -O3 -g3 -ggdb
CXXFLAGS += -fomit-frame-pointer
CXXFLAGS += -ffreestanding
CXXFLAGS += -fstack-usage
CXXFLAGS += -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${ROOTDIR}/springbok/springbok_no_wmmu.ld
CC := ${SHODANROOTDIR}/cache/toolchain_vp/bin/riscv32-unknown-elf-gcc
CPP := ${SHODANROOTDIR}/cache/toolchain_vp/bin/riscv32-unknown-elf-g++
${BUILDDIR}/hello_vec.elf: ${BUILDDIR}/main.o ${BUILDDIR}/springbok_gloss.o ${BUILDDIR}/springbok.o ${BUILDDIR}/crt0.o
mkdir -p $(dir $@)
${CPP} ${CXXFLAGS} ${CPPFLAGS} $^ ${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.cpp ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CPP} ${CXXFLAGS} ${CPPFLAGS} -c $< -o $@
${BUILDDIR}/springbok_gloss.o: ${ROOTDIR}/springbok/springbok_gloss.cpp ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CPP} ${CXXFLAGS} ${CPPFLAGS} -c $< -o $@
${BUILDDIR}/springbok.o: ${ROOTDIR}/springbok/springbok.cpp ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CPP} ${CXXFLAGS} ${CPPFLAGS} -c $< -o $@
${BUILDDIR}/crt0.o: ${ROOTDIR}/springbok/crt0.s ${MAKEFILE_LIST}
mkdir -p $(dir $@)
${CC} ${CXXFLAGS} ${CFLAGS} -c $< -o $@
.PHONY: clean
clean:
rm -rf ${BUILDDIR}