PROJECT := stm8_bootloader
BUILD_DIR := build
SRC_DIR := src
INC_DIR := include

CC := sdcc
OBJCOPY := packihx

# Bootloader 固定放在 STM8S003F3P6 的 Flash 起始地址 0x8000。
CFLAGS := -mstm8 --std-c99 --opt-code-size -I$(INC_DIR)
LDFLAGS := -mstm8 --out-fmt-ihx --code-loc 0x8000 --data-loc 0x0000

SOURCES := $(shell find $(SRC_DIR) -name '*.c' -print)
OBJECTS := $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.rel,$(SOURCES))
IHX := $(BUILD_DIR)/$(PROJECT).ihx
HEX := $(BUILD_DIR)/$(PROJECT).hex

.PHONY: all clean size

all: $(HEX)

$(HEX): $(IHX)
	@mkdir -p $(dir $@)
	$(OBJCOPY) $< > $@

$(IHX): $(OBJECTS)
	@mkdir -p $(dir $@)
	$(CC) $(LDFLAGS) -o $@ $(OBJECTS)

$(BUILD_DIR)/%.rel: $(SRC_DIR)/%.c
	@mkdir -p $(dir $@)
	$(CC) $(CFLAGS) -c $< -o $@

size: $(IHX)
	@ls -lh $(IHX) $(HEX)

clean:
	rm -rf $(BUILD_DIR)
