# ─────────────────────────────────────────────
#  Makefile — fdr1-modbus-slave
#  Cible : PIC18F4431
#  Compilateur : XC8
# ─────────────────────────────────────────────

# Projet
PROJECT     = fdr1-modbus-slave
MCU         = 18F4431

# Outils
CC          = xc8-cc
IPECMD      = java -jar /opt/microchip/mplabx/v6.20/mplab_platform/mplab_ipe/ipecmd.jar
# -OK

# Répertoires
SRC_DIR     = src
INC_DIR     = includes
BUILD_DIR   = build

# Flags
DFP         = /opt/microchip/mplabx/v6.20/packs/Microchip/PIC18Fxxxx_DFP/1.6.159/xc8

CFLAGS      = -mcpu=$(MCU)
CFLAGS     += -mdfp=$(DFP)
CFLAGS     += -I$(INC_DIR)
CFLAGS     += -O2
CFLAGS     += -maddrqual=ignore
CFLAGS     += -Wl,-Map=$(BUILD_DIR)/$(PROJECT).map

# Sources
SRCS        = $(wildcard $(SRC_DIR)/*.c)

# Cible principale
HEX         = $(BUILD_DIR)/$(PROJECT).hex

# ─────────────────────────────────────────────

.PHONY: all clean flash

all: $(BUILD_DIR) $(HEX)

# Création du répertoire build si absent
$(BUILD_DIR):
	mkdir -p $(BUILD_DIR)

# Compilation + link en une seule passe XC8
$(HEX): $(SRCS)
	$(CC) $(CFLAGS) $(SRCS) -o $(HEX)

# Flash via PICkit3
flash: $(HEX)
	$(IPECMD) -TPPK3 -P$(MCU) -F$(HEX) -M -OL

# Nettoyage
clean:
	rm -rf $(BUILD_DIR)
