Fixed man and doc-html rules.

diff --git a/Make.rules.in b/Make.rules.in
index a168fc4..4118abf 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -246,11 +246,17 @@
 
 # Rules for auto documentation
 
-man: $(C_SRCS)
-	for i in $(C_SRCS); do $(C2MAN) -L -o $(TOPOBJDIR)/documentation/man3w -S3w $(DIVINCL) -D__WINE__ $(MANSPECS) $$i; done
+$(SUBDIRS:%=%/__man__): dummy
+	cd `dirname $@` && $(MAKE) man
 
-doc-html: $(C_SRCS)
-	for i in $(C_SRCS); do $(C2MAN) -L -o $(TOPOBJDIR)/documentation/html -Th -iwindows.h  $(DIVINCL) -D__WINE__ $(MANSPECS) $$i; done
+man: $(C_SRCS) $(SUBDIRS:%=%/__man__)
+	if [ -n "$(C_SRCS)" ]; then $(MKDIR) $(TOPOBJDIR)/documentation/man3w; for i in $(C_SRCS); do $(C2MAN) -L -o $(TOPOBJDIR)/documentation/man3w -S3w $(DIVINCL) -D__WINE__ $(MANSPECS) $$i; done; fi
+
+$(SUBDIRS:%=%/__doc_html__): dummy
+	cd `dirname $@` && $(MAKE) doc-html
+
+doc-html: $(C_SRCS) $(SUBDIRS:%=%/__doc_html__)
+	if [ -n "$(C_SRCS)" ]; then $(MKDIR) $(TOPOBJDIR)/documentation/html; for i in $(C_SRCS); do $(C2MAN) -L -o $(TOPOBJDIR)/documentation/html -Th -iwindows.h  $(DIVINCL) -D__WINE__ $(MANSPECS) $$i; done; fi
 
 # Rule for linting