diff --git a/Makefile.include b/Makefile.include
index 8bf47d1f7da6221582fad5c912685e7a28f5dae6..13aade93983109cb59f618dd3be0a91a85094cdb 100644
--- a/Makefile.include
+++ b/Makefile.include
@@ -115,10 +115,9 @@ $(RIOTBASE)/pkg/%/Makefile.include::
 -include $(OBJ:.o=.d)
 
 $(BINDIR)$(PROJECT)/%.o: %.c $(PROJDEPS) $(USEPKG:%=${BINDIR}%.a)
-	@mkdir -p ${BINDIR}
 	@echo; echo "Compiling.... $*.c"; echo
-	@test -d $(BINDIR)$(PROJECT) || mkdir -p $(BINDIR)$(PROJECT)
-	$(AD)$(CC) $(CFLAGS) $(INCLUDES) -c $*.c -o $(BINDIR)$(PROJECT)/$*.o
+	$(AD)mkdir -p "$(dir $@)"
+	$(ADD)$(CC) $(CFLAGS) $(INCLUDES) -c "$<" -o "$@"
 
 $(USEPKG:%=${BINDIR}%.a)::
 	@mkdir -p ${BINDIR}