Index: translator/examples/Makefile
===================================================================
--- translator/examples/Makefile	(revision 51b734528489f81a5af985bfee9aa3b6625b9774)
+++ translator/examples/Makefile	(revision c8ffe20b6084e6e8082ff367961b87d47cfe83ff)
@@ -1,24 +1,32 @@
-CC=cfa
-CFLAGS=-g
+CC=../../bin/cfa
+CFLAGS = -g -Wunused-function -MD
+MAKEFILE_NAME = ${firstword ${MAKEFILE_LIST}}	# makefile name
 
-%.i: %.c
-	-$(CC) $(CFLAGS) -CFA $< > $@
+OBJECTS1 = iostream.o fstream.o fstream_test.o
+EXEC1 = fstream_test
 
-%.o: %.i
-	$(CC) $(CFLAGS) -c -o $@ $<
+OBJECTS2 = vector_int.o fstream.o iostream.o array.o iterator.o vector_test.o
+EXEC2 = vector_test
 
-all: vector_test
+OBJECTS = ${OBJECTS1} ${OBJECTS2}		# all object files
+DEPENDS = ${OBJECTS:.o=.d}			# substitute ".o" with ".d"
+EXECS = ${EXEC1} ${EXEC2}			# all executables
 
-vector_test: vector_test.o vector_int.o fstream.o iostream.o array.o iterator.o
-fstream_test: fstream_test.o fstream.o iostream.o
+########## Targets ##########
 
-array.o: array.i array.h iterator.h
-iterator.o: iterator.i iterator.h iostream.h
-vector_test.o: vector_test.i vector_int.h iostream.h fstream.h
-vector_int.o: vector_int.i vector_int.h
-fstream_test.o: fstream_test.i iostream.h fstream.h
-fstream.o: fstream.i iostream.h fstream.h
-iostream.o: iostream.i iostream.h
+.PHONY : all clean				# not file names
 
-clean:
-	rm -f fstream_test vector_test *.i *.o
+all : ${EXECS}					# build all executables
+
+${EXEC1} : ${OBJECTS1}				# link step 1st executable
+	${CC} ${CCFLAGS} $^ -o $@		# additional object files before $^
+
+${EXEC2} : ${OBJECTS2}				# link step 2nd executable
+	${CC} ${CCFLAGS} $^ -o $@		# additional object files before $^
+
+${OBJECTS} : ${MAKEFILE_NAME}			# OPTIONAL : changes to this file => recompile
+
+-include ${DEPENDS}				# include *.d files containing program dependences
+
+clean :						# remove files that can be regenerated
+	rm -f ${DEPENDS} ${OBJECTS} ${EXECS} *.class
