# === Environnements === JUNIT_JAR = /usr/share/java/junit.jar HAMCREST_JAR = /usr/share/java/hamcrest-core.jar TEST_ENV = "bin:$(JUNIT_JAR):$(HAMCREST_JAR)" # === Répertoires === SRC_DIR = fr BIN_DIR = bin # === Répertoires des ressources === RES_SRC = fr/iut_fbleau/Res RES_BIN = bin/fr/iut_fbleau/Res # === 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) # === Classe principale === MAIN_CLASS = fr.iut_fbleau.Avalam.Main # === Classe de test === TEST_CLASS = fr.iut_fbleau.Tests.AvalamBoardTest # === Commandes Java === JC = javac # Compilation normale (application uniquement) JCFLAGS = -d $(BIN_DIR) # Compilation des tests (application + JUnit) JCFLAGS_TESTS = -d $(BIN_DIR) -cp $(TEST_ENV) JAVA = java JAVAFLAGS = -cp $(BIN_DIR) JAVAFLAGS_TESTS = -cp $(TEST_ENV) # === Règle par défaut === all: build # === Compilation === build: compile resources @echo "✔ Compilation terminée." compile: @echo "===> Compilation du projet Avalam..." @mkdir -p $(BIN_DIR) @$(JC) $(JCFLAGS) $(SOURCES) 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 # === Copie des ressources (.txt) dans bin === resources: @echo "===> Copie des ressources..." @mkdir -p $(RES_BIN) @cp $(RES_SRC)/* $(RES_BIN)/ @echo "✔ Ressources copiées." # === Exécution === run: @echo "===> Lancement du jeu Avalam..." @$(JAVA) $(JAVAFLAGS) $(MAIN_CLASS) # === Tests === test: check_test_deps compile_tests @echo "===> Lancement des tests..." @$(JAVA) $(JAVAFLAGS_TESTS) org.junit.runner.JUnitCore $(TEST_CLASS) @echo "... Fin des tests." # === Nettoyage === clean: @echo "===> Suppression des fichiers compilés..." @rm -rf $(BIN_DIR) @echo "✔ Nettoyage complet." # === Recompile + run === re: clean build run # === 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)/"