
	==== Paramètres du projet ====
APP_NAME   := papillon
MAIN_CLASS := fr.iutfbleau.papillon.Start  # <-- change si ton main est ailleurs

SRC_DIR  := src
BUILD_DIR:= build
DIST_DIR := dist
RES_DIR  := res
LIB_DIR  := lib

Driver MariaDB
DRIVER_JAR := $(LIB_DIR)/mariadb

Séparateur de classpath selon OS
ifeq ($(OS),Windows_NT)
  SEP := ;
else
  SEP := :
endif

Liste des sources et classes correspondantes
SOURCES := $(shell find $(SRC_DIR) -name ".java")
CLASSES := $(SOURCES:$(SRC_DIR)/%.java=$(BUILD_DIR)/%.class)

==== Règles ====
.PHONY: all compile jar run run-jar clean rebuild

all: compile

$(BUILD_DIR):
    @mkdir -p $(BUILD_DIR)

$(DIST_DIR):
    @mkdir -p $(DIST_DIR)

Compilation de chaque .java vers build/ en respectant les packages
$(BUILD_DIR)/%.class: $(SRC_DIR)/%.java | $(BUILD_DIR)
    @mkdir -p $(dir $@)
    javac -classpath "$(DRIVER_JAR)" -d $(BUILD_DIR) $<

Compile tout + copie des ressources si dossier res/ existe
compile: $(CLASSES)
    @if [ -d "$(RES_DIR)" ]; then \
      echo "Copie des ressources..."; \
      cp -r $(RES_DIR)/ $(BUILD_DIR)/; \
    fi
    @echo "==> Compilation OK"

MANIFEST avec Main-Class et Class-Path (référence le driver)
MANIFEST.MF:
    @echo "Manifest-Version: 1.0" >  MANIFEST.MF
    @echo "Main-Class: $(MAIN_CLASS)" >> MANIFEST.MF
    @echo "Class-Path: ../$(DRIVER_JAR)" >> MANIFEST.MF

Construction du JAR
jar: compile MANIFEST.MF | $(DIST_DIR)
    jar cfm $(DIST_DIR)/$(APP_NAME).jar MANIFEST.MF -C $(BUILD_DIR) .
    @echo "==> JAR créé: $(DIST_DIR)/$(APP_NAME).jar"

Exécution directe depuis build/ + driver sur le classpath
run: compile
    java -classpath "$(BUILD_DIR)$(SEP)$(DRIVER_JAR)" $(MAIN_CLASS)

Exécution du .jar (le MANIFEST référence le driver dans lib/)
run-jar: jar
    java -jar "$(DIST_DIR)/$(APP_NAME).jar"

clean:
    rm -rf $(BUILD_DIR) $(DIST_DIR) MANIFEST.MF

rebuild: clean all

doc:
	javadoc -d doc/ src/*.java