CROSS ?= arm-none-eabi-
CC = $(CROSS)gcc
OBJCOPY = $(CROSS)objcopy
SIZE = $(CROSS)size
MOTOR_COMMISSIONED ?= 0
CHARGE_COMMISSIONED ?= 0
CFLAGS = -mcpu=cortex-m0plus -mthumb -Os -g3 -std=gnu11 -ffreestanding -fno-builtin -ffunction-sections -fdata-sections -Wall -Wextra -Werror -DSTM32G030xx -DMOTOR_COMMISSIONED=$(MOTOR_COMMISSIONED) -DCHARGE_COMMISSIONED=$(CHARGE_COMMISSIONED) -Iinclude -Itarget -Ivendor
IMAGE := $(if $(filter 1,$(MOTOR_COMMISSIONED) $(CHARGE_COMMISSIONED)),airpump-v06-commissioning-m$(MOTOR_COMMISSIONED)-c$(CHARGE_COMMISSIONED),airpump-v06-bench)
SRC = src/control.c src/keys.c src/protocol.c src/display.c src/settings.c target/board.c target/main.c target/startup.c
.PHONY: all test clean
all: build/$(IMAGE).elf build/$(IMAGE).bin build/$(IMAGE).hex
build/$(IMAGE).elf: $(SRC) $(wildcard include/*.h target/*.h vendor/*.h) target/stm32g030k6.ld Makefile
	mkdir -p build
	$(CC) $(CFLAGS) $(SRC) -nostdlib -Wl,--gc-sections,-Map=build/$(IMAGE).map -Ttarget/stm32g030k6.ld -lgcc -o $@
	$(SIZE) $@
build/%.bin: build/%.elf
	$(OBJCOPY) -O binary $< $@
build/%.hex: build/%.elf
	$(OBJCOPY) -O ihex $< $@
test:
	python3 tools/run_tests.py
clean:
	rm -f build/$(IMAGE).elf build/$(IMAGE).map build/$(IMAGE).bin build/$(IMAGE).hex build/host-tests
