diff --git a/Bakefile b/Bakefile deleted file mode 100644 index 93b28cc..0000000 --- a/Bakefile +++ /dev/null @@ -1,90 +0,0 @@ -# Définition des variables -PACKAGE = fr.monlouyan.bakefile -ENTRY = Main -BUILDDIR = ./build/ -DOCDIR = ./doc/ -CLASSP = ./build -MANIFESTPATH = Manifest.MF -SOURCEDIR = ./src/ -TESTDIR = ./tests/ - -# Liste des fichiers source et leurs correspondances en .class -BAKECLI_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakeCLI.class -TIMESTAMPMANAGER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/TimestampManager.class -BAKEFILEPARSER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakefileParser.class -DEPENDENCYRESOLVER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/DependencyResolver.class -COMMANDEXECUTOR_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/CommandExecutor.class -BAKEENGINE_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakeEngine.class -RULE_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/Rule.class -MAIN_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/Main.class - -# Fichiers source -BAKECLI_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakeCLI.java -TIMESTAMPMANAGER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/TimestampManager.java -BAKEFILEPARSER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakefileParser.java -DEPENDENCYRESOLVER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/DependencyResolver.java -COMMANDEXECUTOR_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/CommandExecutor.java -BAKEENGINE_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakeEngine.java -RULE_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/Rule.java -MAIN_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/Main.java - -# Cible principale -all: init $(MAIN_CLASS) - -# Initialiser les répertoires nécessaires -init: - @mkdir -p $(BUILDDIR) - @mkdir -p $(BUILDDIR)fr/monlouyan/bakefile/ - -$(MAIN_CLASS): $(MAIN_SRC) $(BAKECLI_CLASS) $(BAKEENGINE_CLASS) - @echo "Compilation de $(MAIN_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(MAIN_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - -$(RULE_CLASS): $(RULE_SRC) $(BAKECLI_CLASS) - @echo "Compilation de $(RULE_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(RULE_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - -$(TIMESTAMPMANAGER_CLASS): $(TIMESTAMPMANAGER_SRC) - @echo "Compilation de $(TIMESTAMPMANAGER_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(TIMESTAMPMANAGER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - -$(DEPENDENCYRESOLVER_CLASS): $(DEPENDENCYRESOLVER_SRC) $(RULE_CLASS) - @echo "Compilation de $(DEPENDENCYRESOLVER_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(DEPENDENCYRESOLVER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - -$(COMMANDEXECUTOR_CLASS): $(COMMANDEXECUTOR_SRC) $(RULE_CLASS) $(TIMESTAMPMANAGER_CLASS) - @echo "Compilation de $(COMMANDEXECUTOR_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(COMMANDEXECUTOR_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - -$(BAKEFILEPARSER_CLASS): $(BAKEFILEPARSER_SRC) $(RULE_CLASS) - @echo "Compilation de $(BAKEFILEPARSER_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKEFILEPARSER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - -$(BAKEENGINE_CLASS): $(BAKEENGINE_SRC) $(BAKEFILEPARSER_CLASS) $(DEPENDENCYRESOLVER_CLASS) $(COMMANDEXECUTOR_CLASS) $(RULE_CLASS) $(BAKECLI_CLASS) - @echo "Compilation de $(BAKEENGINE_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKEENGINE_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - -$(BAKECLI_CLASS): $(BAKECLI_SRC) - @echo "Compilation de $(BAKECLI_SRC)..." - @javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKECLI_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src - - -# Génération de la documentation Javadoc -javadoc: - echo "Génération de la documentation Javadoc..." - javadoc -d $(DOCDIR) -sourcepath $(SOURCEDIR) -subpackages $(PACKAGE) - echo "Documentation Javadoc générée dans $(DOCDIR)" - -see-javadoc: javadoc - echo "Ouverture de la documentation Javadoc sur Firefox..." - firefox $(DOCDIR)/index.html - -# Nettoyage des fichiers générés -clean: - echo "Nettoyage des fichiers générés..." - rm -rf $(BUILDDIR) - rm -rf $(DOCDIR) - echo "Nettoyage terminé." - -# Cibles spéciales -.PHONY: all init javadoc clean \ No newline at end of file diff --git a/Makefile b/Makefile index b468cea..7a941dd 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ +# Définition des variables PACKAGE = fr.monlouyan.bakefile ENTRY = Main -SOURCEDIR = ./src/fr/monlouyan/bakefile/ BUILDDIR = ./build/ DOCDIR = ./doc/ JARNAME = bakefile.jar @@ -9,42 +9,94 @@ MANIFESTPATH = Manifest.MF SOURCEDIR = ./src/ TESTDIR = ./tests/ -SOURCES := $(shell find $(SOURCEDIR) -name '*.java') +# Liste des fichiers source et leurs correspondances en .class +BAKECLI_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakeCLI.class +TIMESTAMPMANAGER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/TimestampManager.class +BAKEFILEPARSER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakefileParser.class +DEPENDENCYRESOLVER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/DependencyResolver.class +COMMANDEXECUTOR_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/CommandExecutor.class +BAKEENGINE_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakeEngine.class +RULE_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/Rule.class +MAIN_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/Main.class -all: - @make clean - @make compile - @make jar +# Fichiers source +BAKECLI_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakeCLI.java +TIMESTAMPMANAGER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/TimestampManager.java +BAKEFILEPARSER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakefileParser.java +DEPENDENCYRESOLVER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/DependencyResolver.java +COMMANDEXECUTOR_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/CommandExecutor.java +BAKEENGINE_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakeEngine.java +RULE_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/Rule.java +MAIN_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/Main.java -compile: - @echo "Compiling..." - javac -cp $(CLASSP) -d $(BUILDDIR) $(SOURCES) -Xlint:unchecked -Xlint:deprecation - @echo "Done." +# Cible principale +all: init $(MAIN_CLASS) $(JARNAME) deploy-tests +# Initialiser les répertoires nécessaires +init: + @mkdir -p $(BUILDDIR) + @mkdir -p $(BUILDDIR)fr/monlouyan/bakefile/ + +$(MAIN_CLASS): $(MAIN_SRC) $(BAKECLI_CLASS) $(BAKEENGINE_CLASS) + @echo "Compilation de $(MAIN_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(MAIN_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +$(RULE_CLASS): $(RULE_SRC) $(BAKECLI_CLASS) + @echo "Compilation de $(RULE_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(RULE_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +$(TIMESTAMPMANAGER_CLASS): $(TIMESTAMPMANAGER_SRC) + @echo "Compilation de $(TIMESTAMPMANAGER_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(TIMESTAMPMANAGER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +$(DEPENDENCYRESOLVER_CLASS): $(DEPENDENCYRESOLVER_SRC) $(RULE_CLASS) + @echo "Compilation de $(DEPENDENCYRESOLVER_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(DEPENDENCYRESOLVER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +$(COMMANDEXECUTOR_CLASS): $(COMMANDEXECUTOR_SRC) $(RULE_CLASS) $(TIMESTAMPMANAGER_CLASS) + @echo "Compilation de $(COMMANDEXECUTOR_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(COMMANDEXECUTOR_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +$(BAKEFILEPARSER_CLASS): $(BAKEFILEPARSER_SRC) $(RULE_CLASS) + @echo "Compilation de $(BAKEFILEPARSER_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKEFILEPARSER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +$(BAKEENGINE_CLASS): $(BAKEENGINE_SRC) $(BAKEFILEPARSER_CLASS) $(DEPENDENCYRESOLVER_CLASS) $(COMMANDEXECUTOR_CLASS) $(RULE_CLASS) $(BAKECLI_CLASS) + @echo "Compilation de $(BAKEENGINE_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKEENGINE_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +$(BAKECLI_CLASS): $(BAKECLI_SRC) + @echo "Compilation de $(BAKECLI_SRC)..." + @javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKECLI_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src + +# Création du fichier JAR (on s'assure que tout est compilé) +$(JARNAME): $(MAIN_CLASS) $(RULE_CLASS) $(TIMESTAMPMANAGER_CLASS) $(DEPENDENCYRESOLVER_CLASS) $(COMMANDEXECUTOR_CLASS) $(BAKEFILEPARSER_CLASS) + @echo "Création du fichier JAR..." + @jar cfm $(JARNAME) $(MANIFESTPATH) -C $(BUILDDIR) fr/monlouyan/bakefile + @echo "Fichier JAR créé : $(JARNAME)" + +# Génération de la documentation Javadoc +javadoc: + @echo "Génération de la documentation Javadoc..." + @javadoc -d $(DOCDIR) -sourcepath $(SOURCEDIR) -subpackages $(PACKAGE) + @echo "Documentation Javadoc générée dans $(DOCDIR)" + +see-javadoc: javadoc + @echo "Ouverture de la documentation Javadoc sur Firefox..." + @firefox $(DOCDIR)/index.html + +# Déploiement du JAR dans les répertoires de test +deploy-tests: $(JARNAME) + @find $(TESTDIR) -type d -name 'bake' -exec cp $(JARNAME) {} \; + +# Nettoyage des fichiers générés clean: - @echo "Cleaning up..." - @rm -rf $(BUILDDIR)* $(DOCDIR)* + @echo "Nettoyage des fichiers générés..." + @rm -rf $(BUILDDIR) + @rm -rf $(DOCDIR) @rm -f $(JARNAME) @find $(TESTDIR) -name "$(JARNAME)" -delete - @echo "Done." + @echo "Nettoyage terminé." -javadoc: - @echo "Generating javadoc..." - @javadoc -d $(DOCDIR) -sourcepath src -subpackages $(PACKAGE) - @echo "Done." - -jar: - @echo "Creating jar..." - @jar cfm $(JARNAME) $(MANIFESTPATH) -C $(BUILDDIR) fr/monlouyan/bakefile - @echo "Done." - @make deploy-tests - -deploy-tests: - @echo "Deploying JAR to 'bake' directories..." - @find $(TESTDIR) -type d -name 'bake' -exec cp $(JARNAME) {} \; - @echo "Done." - -run_test: - @echo "Running tests..." - @java -cp build fr.monlouyan.bakefile.tests.BakeTestRunner - @echo "Done." \ No newline at end of file +# Cibles spéciales +.PHONY: all init javadoc deploy-tests clean \ No newline at end of file