C.1 Notes préliminaires
Chaque makefile commence par l'inclusion du fichier
default.mk. Ce fichier contient la liste des définitions globales
pour tous les makefile : ce sont les répertoires où stocker les
packages (PACKAGEDIR), le binaire de lancement de l'application
(BINDIR) et la documentation (DOCDIR). Cette approche
nous évite d'avoir à modifier tous les makefile si l'on désire juste
changer un répertoire cible.
C.2 Exemple de makefile de module : Compilation
include ../default.mk
all: lanceur
comp:
javac -classpath ../$(PACKAGEDIR) -d ../$(PACKAGEDIR) Compilation.java
lanceur: comp
javac -classpath ../$(PACKAGEDIR) Lanceur.java
build: comp
clean:
rm -rf *.class *~
mrproper:
rm -rf ../$(PACKAGEDIR)/compilation
C.3 Le Makefile global
include default.mk
MODULES=asa mem interpretationJajacode compilation \
interpretationMinijaja
SEPARATOR=;
all : build
mkdir:
mkdir -p $(PACKAGEDIR)
mkdir -p $(BINDIR)
interfacage-ihm:
mkdir -p $(PACKAGEDIR)/IHM/images
mkdir -p $(PACKAGEDIR)/IHM/aide
cp -r ihm/images $(PACKAGEDIR)/IHM
cp -r ihm/aide $(PACKAGEDIR)/IHM
javac -classpath $(PACKAGEDIR) -d $(PACKAGEDIR) \
interfacage/*.java ihm/*.java
build-phase1:
for i in $(MODULES); \
do \
$(MAKE) -C $$i build; \
done
build-phase2:
$(MAKE) -C lanceur build
build: mkdir build-phase1 interfacage-ihm build-phase2 clean
doc:
javadoc -d $(DOCDIR) -classpath $(PACKAGEDIR) -private -author
-windowTitle MiniJaja -docTitle MinJaja interfacage/*.java
ihm/*.java compilation/Compilation.java mem/*.java
lanceur/*.java interpretationMinijaja/*.java
interpretationJajacode/*.java
run:
cd $(BINDIR); \
java -classpath "../$(PACKAGEDIR)$(SEPARATOR)." Lanceur
jar:
jar cvfm MiniJaja.jar manifest.mf -C bin . -C lib .
clean:
for i in $(MODULES); \
do \
$(MAKE) -C $$i clean; \
done
rm -rf *~
mrproper: clean
for i in $(MODULES); \
do \
$(MAKE) -C $$i mrproper; \
done
rm -rf $(PACKAGEDIR)
rm -rf $(DOCDIR)
rm -f MiniJaja.jar