2026-02-03 10:38:14 +01:00
|
|
|
# === Environnements ===
|
2026-02-05 16:37:57 +01:00
|
|
|
JUNIT_JAR = /usr/share/java/junit.jar
|
|
|
|
|
HAMCREST_JAR = /usr/share/java/hamcrest-core.jar
|
|
|
|
|
TEST_ENV = "bin:$(JUNIT_JAR):$(HAMCREST_JAR)"
|
2026-02-03 10:38:14 +01:00
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Répertoires ===
|
|
|
|
|
SRC_DIR = fr
|
2025-11-20 13:25:09 -05:00
|
|
|
BIN_DIR = bin
|
|
|
|
|
|
2025-11-27 13:06:14 +01:00
|
|
|
# === Répertoires des ressources ===
|
|
|
|
|
RES_SRC = fr/iut_fbleau/Res
|
|
|
|
|
RES_BIN = bin/fr/iut_fbleau/Res
|
|
|
|
|
|
2026-02-05 16:37:57 +01:00
|
|
|
# === Recherche automatique des fichiers .java ===
|
|
|
|
|
# SOURCES : uniquement le code de l'application (sans les fichiers de tests)
|
|
|
|
|
SOURCES := $(shell find $(SRC_DIR) -name "*.java" -not -path "$(SRC_DIR)/iut_fbleau/Tests/*")
|
|
|
|
|
# TEST_SOURCES : uniquement les fichiers de tests
|
|
|
|
|
TEST_SOURCES := $(shell find $(SRC_DIR)/iut_fbleau/Tests -name "*.java" 2>/dev/null)
|
2025-11-20 13:25:09 -05:00
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Classe principale ===
|
|
|
|
|
MAIN_CLASS = fr.iut_fbleau.Avalam.Main
|
2025-11-20 13:25:09 -05:00
|
|
|
|
2026-02-03 10:38:14 +01:00
|
|
|
# === Classe de test ===
|
|
|
|
|
TEST_CLASS = fr.iut_fbleau.Tests.AvalamBoardTest
|
|
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Commandes Java ===
|
2025-11-20 13:25:09 -05:00
|
|
|
JC = javac
|
2026-02-05 16:37:57 +01:00
|
|
|
# Compilation normale (application uniquement)
|
|
|
|
|
JCFLAGS = -d $(BIN_DIR)
|
|
|
|
|
# Compilation des tests (application + JUnit)
|
|
|
|
|
JCFLAGS_TESTS = -d $(BIN_DIR) -cp $(TEST_ENV)
|
2025-11-20 13:25:09 -05:00
|
|
|
|
|
|
|
|
JAVA = java
|
|
|
|
|
JAVAFLAGS = -cp $(BIN_DIR)
|
2026-02-03 10:38:14 +01:00
|
|
|
JAVAFLAGS_TESTS = -cp $(TEST_ENV)
|
2025-11-20 13:25:09 -05:00
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Règle par défaut ===
|
2025-11-20 13:25:09 -05:00
|
|
|
all: build
|
|
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Compilation ===
|
2025-11-27 13:06:14 +01:00
|
|
|
build: compile resources
|
|
|
|
|
@echo "✔ Compilation terminée."
|
|
|
|
|
|
|
|
|
|
compile:
|
2025-11-22 11:56:51 -05:00
|
|
|
@echo "===> Compilation du projet Avalam..."
|
2025-11-20 13:25:09 -05:00
|
|
|
@mkdir -p $(BIN_DIR)
|
|
|
|
|
@$(JC) $(JCFLAGS) $(SOURCES)
|
2025-11-27 13:06:14 +01:00
|
|
|
|
2026-02-05 16:37:57 +01:00
|
|
|
compile_tests: compile
|
|
|
|
|
@echo "===> Compilation des tests..."
|
|
|
|
|
@mkdir -p $(BIN_DIR)
|
|
|
|
|
ifneq ($(TEST_SOURCES),)
|
|
|
|
|
@$(JC) $(JCFLAGS_TESTS) $(TEST_SOURCES)
|
|
|
|
|
else
|
|
|
|
|
@echo "Aucun fichier de test trouvé dans $(SRC_DIR)/iut_fbleau/Tests"
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
# === Vérification / installation des dépendances de tests ===
|
|
|
|
|
check_test_deps:
|
|
|
|
|
@echo "===> Vérification des dépendances de tests (JUnit / Hamcrest)..."
|
|
|
|
|
@if [ ! -f "$(JUNIT_JAR)" ] || [ ! -f "$(HAMCREST_JAR)" ]; then \
|
|
|
|
|
echo " JUnit ou Hamcrest manquant, tentative d'installation (sudo requis)..."; \
|
|
|
|
|
if command -v sudo >/dev/null 2>&1; then \
|
|
|
|
|
sudo apt-get update && sudo apt-get install -y junit4 libhamcrest-java; \
|
|
|
|
|
else \
|
|
|
|
|
apt-get update && apt-get install -y junit4 libhamcrest-java; \
|
|
|
|
|
fi; \
|
|
|
|
|
if [ ! -f "$(JUNIT_JAR)" ] || [ ! -f "$(HAMCREST_JAR)" ]; then \
|
|
|
|
|
echo "✖ Impossible de trouver/installer $(JUNIT_JAR) ou $(HAMCREST_JAR). Vérifiez manuellement vos paquets JUnit/Hamcrest."; \
|
|
|
|
|
exit 1; \
|
|
|
|
|
else \
|
|
|
|
|
echo "✔ Dépendances de tests installées."; \
|
|
|
|
|
fi; \
|
|
|
|
|
else \
|
|
|
|
|
echo "✔ JUnit et Hamcrest trouvés."; \
|
|
|
|
|
fi
|
|
|
|
|
|
2025-11-27 13:06:14 +01:00
|
|
|
# === Copie des ressources (.txt) dans bin ===
|
|
|
|
|
resources:
|
|
|
|
|
@echo "===> Copie des ressources..."
|
|
|
|
|
@mkdir -p $(RES_BIN)
|
|
|
|
|
@cp $(RES_SRC)/* $(RES_BIN)/
|
|
|
|
|
@echo "✔ Ressources copiées."
|
2025-11-20 13:25:09 -05:00
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Exécution ===
|
2025-11-20 13:25:09 -05:00
|
|
|
run:
|
2025-11-22 11:56:51 -05:00
|
|
|
@echo "===> Lancement du jeu Avalam..."
|
|
|
|
|
@$(JAVA) $(JAVAFLAGS) $(MAIN_CLASS)
|
2025-11-20 13:25:09 -05:00
|
|
|
|
2026-02-03 10:38:14 +01:00
|
|
|
# === Tests ===
|
2026-02-05 16:37:57 +01:00
|
|
|
test: check_test_deps compile_tests
|
2026-02-03 10:38:14 +01:00
|
|
|
@echo "===> Lancement des tests..."
|
|
|
|
|
@$(JAVA) $(JAVAFLAGS_TESTS) org.junit.runner.JUnitCore $(TEST_CLASS)
|
|
|
|
|
@echo "... Fin des tests."
|
|
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Nettoyage ===
|
2025-11-20 13:25:09 -05:00
|
|
|
clean:
|
2025-11-22 11:56:51 -05:00
|
|
|
@echo "===> Suppression des fichiers compilés..."
|
2025-11-20 13:25:09 -05:00
|
|
|
@rm -rf $(BIN_DIR)
|
2025-11-22 11:56:51 -05:00
|
|
|
@echo "✔ Nettoyage complet."
|
2025-11-20 13:25:09 -05:00
|
|
|
|
2025-11-22 11:56:51 -05:00
|
|
|
# === Recompile + run ===
|
|
|
|
|
re: clean build run
|
2025-11-23 17:29:28 +01:00
|
|
|
|
|
|
|
|
# === Génération de la Javadoc ===
|
|
|
|
|
DOC_DIR = doc
|
|
|
|
|
javadoc:
|
|
|
|
|
@echo "===> Génération de la Javadoc..."
|
|
|
|
|
@mkdir -p $(DOC_DIR)
|
|
|
|
|
@javadoc -d $(DOC_DIR) -sourcepath $(SRC_DIR) -subpackages fr.iut_fbleau.Avalam
|
|
|
|
|
@echo "✔ Javadoc générée dans $(DOC_DIR)/"
|