diff --git a/makefile b/makefile
index 02367f9e42c3566326f2dcb1098fadb8261b8b63..5a469e8d80ec645e8b952717629ca1245f26a90f 100644
--- a/makefile
+++ b/makefile
@@ -1,33 +1,42 @@
 CC = gcc
-CFLAGS = -Wall -Wextra
-SOURCES = $(wildcard *.c)
+CFLAGS = -Wall -Wextra -g		# L'option de debug -g à enlever
+ALL_SOURCES = $(wildcard *.c)
+TEST_SOURCES = $(filter-out main.c, $(ALL_SOURCES))
+SOURCES = $(filter-out test.c, $(ALL_SOURCES))
 HEADERS = $(wildcard *.h)
+TEST_OBJECTS = $(TEST_SOURCES:.c=.o)
 OBJECTS = $(SOURCES:.c=.o)
-MAKEFILE = makefile
-README = README.md
-DOXYFILE = Doxyfile
-DOXYGEN = doxygen
 DOXYGEN_FLAGS =
 LEVELS = $(wildcard level*.txt)
 ARCHIVE_NAME = ERKEN_Efe.tar.gz
-ARCHIVE_SOURCES = $(SOURCES) $(HEADERS) $(MAKEFILE) $(LEVELS) $(README) $(DOXYFILE)
-ARCHIVE = tar
+ARCHIVE_SOURCES = $(SOURCES) $(HEADERS) makefile $(LEVELS) README.md Doxyfile
+ARCHIVER = tar
 ARCHIVE_FLAGS = -cvzf
+TEST_EXEC = sokoban_test
 EXEC = sokoban
 
+.PHONY : all test clean doc archive
+
+all : $(EXEC)
+
+test : $(TEST_EXEC)
+
 $(EXEC) : $(OBJECTS)
 	$(CC) $(CFLAGS) -o $@ $^
 
-%.o : %.c
+$(TEST_EXEC) : $(TEST_OBJECTS)
+	$(CC) $(CFLAGS) -o $@ $^
+
+%.o : %.c %.h
 	$(CC) $(CFLAGS) -c $<
 
 clean :
-	rm sokoban
-	rm *.o
+	rm -f $(EXEC) $(TEST_EXEC) $(OBJECTS)
 
 doc :
-	$(DOXYGEN) $(DOXYGEN_FLAGS)
+	doxygen $(DOXYGEN_FLAGS)
 
-archive : $(ARCHIVE_SOURCES)
-	$(ARCHIVE) $(ARCHIVE_FLAGS) $(ARCHIVE_NAME) $^
+archive : $(ARCHIVE_NAME)
 
+$(ARCHIVE_NAME) : $(ARCHIVE_SOURCES)
+	$(ARCHIVER) $(ARCHIVE_FLAGS) $@ $^