# Set the project name here
NAME = gauntlet

OUTPUTDIR = output
TOOLCHAIN_ARCH := v810
TOOLCHAIN_DIR := $(HOME)/llvm-v810

# The rest of the Makefile should not need changing ...
BINDIR = $(TOOLCHAIN_DIR)/bin
INCDIR = $(TOOLCHAIN_DIR)/include
LIBDIR = $(TOOLCHAIN_DIR)/lib

AS = $(BINDIR)/llvm-mc
CC = $(BINDIR)/clang
LD = $(BINDIR)/ld.lld
OBJCOPY = $(BINDIR)/llvm-objcopy

ASFLAGS += --triple v810-unknown-vb -mcpu=vb --filetype=obj -g
LDFLAGS += -target v810-unknown-vb -mcpu=vb --ld-path=$(LD) -L$(LIBDIR) -Tvb.ld -nolibc -flto

SFILES := $(foreach dir,./,$(notdir $(wildcard $(dir)/*.s)))

SOBJS := $(OUTPUTDIR)/$(SFILES:.s=.o)

OFILES := $(SOBJS)
ELFFILES := $(OUTPUTDIR)/$(NAME).elf
VBFILES := $(OUTPUTDIR)/$(NAME).vb

.PHONY: all clean distclean

all: $(VBFILES)

$(VBFILES): $(ELFFILES)
	@$(OBJCOPY) -S -O binary $< $@

$(ELFFILES): $(OFILES)
	@$(CC) $(OFILES) $(LDFLAGS) -o $@

$(SOBJS): $(SFILES)
	@$(AS) $(ASFLAGS) -o $@ $<

clean: 
#	@rm -f $(OFILES) $(VBFILES) $(ELFFILES)
	@rm -f output/*

distclean: clean