# Makefile pour EZ-Draw # # 08/04/2013 - Edouard.Thiel@lif.univ-mrs.fr # Variables pour systemes Unix/X11 (linux, Mac OS, etc) SHELL = /bin/bash CC = gcc CFLAGS = -Wall -W -ansi -pedantic -O2 -g LIBS = -lX11 -lXext -L/usr/X11R6/lib RM = rm -f # Rajoutez vos executables a la fin de EXECS, EXECS_M, ou EXECS_IM : # EXECS avec ez-draw.o # EXECS_M avec ez-draw.o et -lm # EXECS_IM avec ez-draw.o et ez-image.o et -lm # EXECS = demo-01 demo-02 demo-03 demo-04 demo-05 demo-06 demo-07 demo-08 \ demo-09 demo-11 jeu-sudoku jeu-nim jeu-vie jeu-taquin jeu-bubblet EXECS_M = demo-10 jeu-laby jeu-ezen jeu-heziom jeu-tangram EXECS_IM = demo-12 demo-13 demo-14 demo-15 demo-16 demo-17 jeu-doodle EXECS_ALL = $(EXECS) $(EXECS_M) $(EXECS_IM) .c.o : $(CC) -c $(CFLAGS) $*.c help :: @echo "Options du make : help all ln clean distclean" all :: $(EXECS_ALL) # Cette double dependance un peu speciale est de la syntaxe GNU-make ; # elle est equivalente a # demo0 : demo0.o ez-draw.o # demo1 : demo1.o ez-draw.o # ... # $(EXECS) : # $(CC) -o $@ $^ $(LIBS) $(EXECS) : % : %.o ez-draw.o $(CC) -o $@ $^ $(LIBS) $(EXECS_M) : % : %.o ez-draw.o $(CC) -o $@ $^ $(LIBS) -lm $(EXECS_IM) : % : %.o ez-draw.o ez-image.o $(CC) -o $@ $^ $(LIBS) -lm clean :: $(RM) *.o core distclean :: clean $(RM) *% *~ .*.swp $(EXECS_ALL) # Cette cible cree un lien $HOME/ez-draw vers votre repertoire d'installation ln :: @P=`pwd` ; N="$${HOME}/ez-draw" ;\ if [ -h "$$N" ]; then mv -f "$$N" "$$N.old" ; fi ;\ echo "ln -s \"$$P\" \"$$N\"" ; ln -s "$$P" "$$N" #---------------------- C I B L E S P R I V E E S --------------------------- TARGET = Edouard.Thiel@saphir2.lidil.univ-mrs.fr # Creation d'un tarball tar :: distclean @N=`pwd` ; N=`basename "$$N"` ;\ cd .. ; P=`pwd` ;\ tar cvfz $$N.tgz $$N --exclude='svg*' --exclude='rsync*' ;\ echo "DONE: tar cvfz $$P/$$N.tgz $$N" ;\ ls -l $$P/$$N.tgz # Sauvegarde sur saphir2 sap :: distclean @N=`pwd` ; N=`basename "$$N"` ;\ D=`date "+%Y-%m-%d- %H" | awk '{ printf "%s", $$1 ; printf "%c", $$2+97 }'` ;\ cd .. ; P=`pwd` ; F="$${N}_$${D}.tgz" ;\ tar cvfz $$F $$N --exclude='svg*' --exclude='rsync*' ;\ echo "DONE: tar cvfz $$F $$N" ;\ echo "Copying $$F to saphir2 ..." ;\ scp "$$F" "$(TARGET):PROG/EZ-DRAW" ;\ # Mise a jour de la page web - version finale web :: tar @P=`pwd` ; N=`basename "$$P"` ; t="$${HOME}/public_html" ;\ if [ -f "$$t/index.html" ]; then \ echo "Updating \"$$t ...\"" ;\ cp -f "../$$N.tgz" "$$t" ;\ ( cd "$$t" ;\ if [ -d "$$N" ]; then rm -rf "$$N" ; fi ;\ tar xvfz "$$N.tgz" ;\ if [ -h "ez-draw" ]; then rm -f "ez-draw" ; fi ;\ ln -s "$$N" "ez-draw" ;\ ./GenWeb.sh --gen "ez-draw/index.html" ;\ ) ;\ echo "Updating web ..." ;\ scp -r "$${t}/ez-draw" "$${t}/$$N.tgz" "$(TARGET):public_html/" ;\ fi ;\ echo "done" # Mise a jour de la page web - version developpement pre :: tar @P=`pwd` ; N=`basename "$$P"` ; t="$${HOME}/public_html" ;\ if [ -f "$$t/index.html" ]; then \ echo "Updating \"$$t ...\"" ;\ cp -f "../$$N.tgz" "$$t" ;\ ( cd "$$t" ;\ if [ -d "$$N" ]; then rm -rf "$$N" ; fi ;\ tar xvfz "$$N.tgz" ;\ ./GenWeb.sh --gen "$$N/index.html" ;\ ) ;\ echo "Updating web ..." ;\ scp -r "$${t}/$$N" "$${t}/$$N.tgz" "$(TARGET):public_html/" ;\ fi ;\ echo "done" # Test de ez-image.c avec valgrind test-vg-image :: @for i in ../images_test/* ; do \ valgrind --tool=memcheck --leak-check=yes --show-reachable=yes \ --num-callers=20 --track-fds=yes ./demo-13 "$$i" ;\ echo ; echo "Pressez sur [Entree] ..." ; read ;\ done # Verification de l'encodage des sources mime :: distclean file --mime-encoding * # Verification de l'absence de tabulations tabs :: @grep -P '\t' *.c *.h *.boc README || echo "Aucune tabulation detectee" # Creation du tutorial : taper make docclean doc doc :: @(cd doc && make html dist) docclean :: @(cd doc && make clean)