80 lines
2.0 KiB
Makefile
80 lines
2.0 KiB
Makefile
# If the first argument is "jeu"...
|
|
ifeq (jeu,$(firstword $(MAKECMDGOALS)))
|
|
# use the rest as arguments for "jeu"
|
|
RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
|
# ...and turn them into do-nothing targets
|
|
$(eval $(RUN_ARGS):;@:)
|
|
endif
|
|
|
|
# If the first argument is "creation"...
|
|
ifeq (creation,$(firstword $(MAKECMDGOALS)))
|
|
# use the rest as arguments for "creation"
|
|
CREATION_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS))
|
|
# ...and turn them into do-nothing targets
|
|
$(eval $(CREATION_ARGS):;@:)
|
|
endif
|
|
|
|
### VARIABLES ###
|
|
|
|
JC = javac
|
|
JCFLAGS = -encoding UTF-8 -implicit:none
|
|
JVM = java
|
|
JVMFLAGS =
|
|
|
|
SRCDIR = ./src
|
|
OUTDIR = ./out
|
|
DOCDIR = ./doc
|
|
|
|
### LISTE DES FICHIERS SOURCE ###
|
|
|
|
SRCFILES := $(wildcard $(SRCDIR)/*.java)
|
|
|
|
### LISTE DES FICHIERS OBJET ###
|
|
|
|
CLASSFILES := $(patsubst $(SRCDIR)/%.java,$(OUTDIR)/%.class,$(SRCFILES))
|
|
|
|
### REGLES ESSENTIELLES ###
|
|
|
|
# Compilation de tous les fichiers source
|
|
$(OUTDIR)/%.class : $(SRCDIR)/%.java | $(OUTDIR)
|
|
@mkdir -p $(OUTDIR)
|
|
$(JC) $(JCFLAGS) -cp $(SRCDIR) -d $(OUTDIR) $<
|
|
|
|
# Crée le répertoire de sortie s'il n'existe pas
|
|
$(OUTDIR):
|
|
mkdir -p $(OUTDIR)
|
|
|
|
# La classe MainJeu dépend de tous les fichiers compilés
|
|
$(OUTDIR)/MainJeu.class : $(CLASSFILES)
|
|
|
|
# La classe MainCreation dépend de tous les fichiers compilés
|
|
$(OUTDIR)/MainCreation.class : $(CLASSFILES)
|
|
|
|
### REGLES OPTIONNELLES ###
|
|
|
|
# Règle pour lancer le programme MainJeu
|
|
jeu : $(OUTDIR)/MainJeu.class
|
|
$(JVM) $(JVMFLAGS) -cp $(OUTDIR) MainJeu $(RUN_ARGS)
|
|
|
|
# Règle pour lancer le programme MainCreation
|
|
creation : $(OUTDIR)/MainCreation.class
|
|
$(JVM) $(JVMFLAGS) -cp $(OUTDIR) MainCreation $(CREATION_ARGS)
|
|
|
|
# Nettoyage des fichiers générés
|
|
clean :
|
|
-rm -rf $(OUTDIR)
|
|
-rm -rf $(DOCDIR)
|
|
|
|
# Nettoyage et suppression des fichiers générés, y compris la classe Main
|
|
mrproper : clean
|
|
|
|
# Génération de la documentation
|
|
doc :
|
|
javadoc -d $(DOCDIR) $(SRCDIR)/*.java
|
|
|
|
### BUTS FACTICES ###
|
|
|
|
.PHONY : jeu creation clean mrproper doc
|
|
|
|
### FIN ###
|