# required for stm8gal
stm8gal_PATH   = ~/Öffentlich/GitHub/stm8gal/binaries/stm8gal_linux64
stm8gal_PORT   = /dev/ttyUSB0

# define compiler path (if not in PATH), and flags
CC            = sdcc
#CFLAGS        = -mstm8
#LFLAGS        = -mstm8 -lstm8
CFLAGS        = -mstm8 --codeseg RAM_SEG
LFLAGS        = -mstm8 -lstm8 -Wl-bRAM_SEG=0x00a0

# set output folder and target name
OUTPUT_DIR    = output
TARGET        = $(OUTPUT_DIR)/main.ihx

# find all -c and .h in specified directories PRJ_DIRS
SOURCES       = $(wildcard *.c)
HEADERS       = $(wildcard *.h)
OBJECTS       = $(addprefix $(OUTPUT_DIR)/, $(SOURCES:.c=.rel))


########
# dependencies & make instructions
########

.PHONY: clean all default

.PRECIOUS: $(TARGET) $(OBJECTS)

default: $(OUTPUT_DIR) $(TARGET)

all: default

# create output folder
$(OUTPUT_DIR):
	mkdir -p $(OUTPUT_DIR)
	rm -fr -- -p

# link target
$(TARGET) : $(OBJECTS)
	$(CC) $(LFLAGS) -o $@ $(OBJECTS)

# compile objects
$(OBJECTS) : $(SOURCES) $(HEADERS)
$(OUTPUT_DIR)/%.rel : %.c
	$(CC) $(CFLAGS) -c $< -o $@

# clean up
clean:
	rm -fr $(OUTPUT_DIR)


# upload SDCC output via STM8 bootloader ( https://github.com/gicking/STM8_serial_flasher )
serial:
	$(stm8gal_PATH) -port $(stm8gal_PORT) -write-file $(TARGET) -reset 0 -no-verify -verbose 3
