# === Configuration ===
SRC_DIR := src/fr/iutfbleau/papillon
BUILD_DIR := build
DOC_DIR := doc
LIB_DIR := lib
LIB := $(LIB_DIR)/mariadb
MAIN_CLASS := fr.iutfbleau.papillon.Start

# === Commandes principales ===

# Compilation du projet
compile:
	@echo === Compilation du projet ===
	javac -encoding UTF-8 -cp "$(LIB)" -d $(BUILD_DIR) $(SRC_DIR)/*.java
	@echo  Compilation terminee !

# Exécution du programme
run: compile
	@echo === Execution du programme ===
	java -cp "$(BUILD_DIR);$(LIB)" $(MAIN_CLASS)

# Génération de la documentation Javadoc
doc:
	@echo === Generation de la documentation Javadoc ===
	javadoc -d $(DOC_DIR) -encoding UTF-8 -cp "$(LIB)" $(SRC_DIR)/*.java
	@echo  Documentation generee dans le dossier $(DOC_DIR)

# === Création du JAR ===
jar: compile
	@echo === Creation du fichier JAR ===
	echo Main-Class: $(MAIN_CLASS) > manifest.txt
	jar cfm $(JAR_FILE) manifest.txt -C $(BUILD_DIR) .
	@echo Archive JAR creee : $(JAR_FILE)
	@del manifest.txt 2>nul || true

# === Exécution du JAR ===
run-jar: jar
	@echo === Execution du JAR ===
	java -cp "$(JAR_FILE);$(LIB)" -jar $(JAR_FILE)

# Nettoyage du dossier build
clean:
	@echo === Nettoyage des fichiers compiles ===
	@rmdir /s /q $(BUILD_DIR) 2>nul || true
	@mkdir $(BUILD_DIR)
	@echo  Build nettoye.

# Nettoyage complet (build + doc)
reset: clean
	@echo === Suppression de la documentation ===
	@rmdir /s /q $(DOC_DIR) 2>nul || true
	@mkdir $(DOC_DIR)
	@echo  Tout a ete nettoye.

# Compilation + exécution directe
all: compile run
