BIN_PREFIX=/opt/baremetalriscv/bin/
CXX=${BIN_PREFIX}riscv32-none-elf-g++
OBJCOPY=${BIN_PREFIX}riscv32-none-elf-objcopy
CXX_FLAGS=-std=c++20 -march=rv32eczicsr -mabi=ilp32e -fno-exceptions -fno-rtti -nostartfiles -nodefaultlibs -DLED_PD6
SOURCES=main.cc startup.cc interrupt.cc timer.cc led_block.cc lfsr.cc
OBJECTS=$(SOURCES:.cc=.o)
MINICHLINK=/opt/src/ch32fun/minichlink/minichlink

main.bin: main.elf
	$(OBJCOPY) -O binary main.elf main.bin

main.elf: $(OBJECTS)
	$(CXX) $(CXX_FLAGS) -Wl,-Tch32v003.ld -o main.elf $(OBJECTS)

.cc.o:
	$(CXX) $(CXX_FLAGS) -c -o $@ $<

send:
	$(MINICHLINK) -w main.bin 0x08000000

unbrick:
	$(MINICHLINK) -u

clean:
	rm -f main.bin main.elf *.o
