Previous Up Next

Appendix C  Les Makefiles

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

Previous Up Next