# Makefile for EZ-Draw # # 21/03/2014 - Edouard.Thiel@lif.univ-mrs.fr # Variables for Unix/X11 systems (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 # Add your executables at the end of EXECS, EXECS_M, or EXECS_IM: # EXECS with ez-draw.o # EXECS_M with ez-draw.o and -lm # EXECS_IM with ez-draw.o and ez-image.o and -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 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-bubblet jeu-doodle EXECS_ALL = $(EXECS) $(EXECS_M) $(EXECS_IM) .c.o : $(CC) -c $(CFLAGS) $*.c help :: @echo "Options for make : help all ln clean distclean" all :: $(EXECS_ALL) # This double dependency is GNU-make syntax; it is equivalent to # 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) # This target creates a link $HOME/ez-draw to your home directory 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" #------------------------------- P R I V A T E -------------------------------- SAP = Edouard.Thiel@saphir2.lidil.univ-mrs.fr # Tarball creation 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 # Backup on SAP 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 $(SAP) ..." ;\ scp "$$F" "$(SAP):PROG/EZ-DRAW" ;\ # Update web page - final version 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" --gen "$$N/index-en.html" ;\ ) ;\ echo "Updating web ..." ;\ scp -r "$${t}/ez-draw" "$${t}/$$N.tgz" "$(SAP):public_html/" ;\ fi ;\ echo "done" # Update web page - development version 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" --gen "$$N/index-en.html" ;\ ) ;\ echo "Updating web ..." ;\ scp -r "$${t}/$$N" "$${t}/$$N.tgz" "$(SAP):public_html/" ;\ fi ;\ echo "done" # Check ez-image.c using 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 "Press [Enter] ..." ; read ;\ done # Check sources encoding mime :: distclean file --mime-encoding * # Check tabs absence tabs :: @grep -P '\t' *.c *.h README || echo "No tab detected" # Create documentation: type make docclean doc LANGUAGES = fr en doc :: @for lang in $(LANGUAGES) ; do \ (cd doc && make LANGUAGE=$$lang html dist) ;\ done docclean :: @for lang in $(LANGUAGES) ; do \ (cd doc && make LANGUAGE=$$lang clean) ;\ done