Build idl files as part of the normal build process.

diff --git a/Make.rules.in b/Make.rules.in
index 72a6c57..8c521af 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -113,7 +113,7 @@
 
 # Implicit rules
 
-.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .ok .sfd .ttf
+.SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.c .spec.def .idl .h .ok .sfd .ttf
 
 .c.o:
 	$(CC) -c $(ALLCFLAGS) -o $@ $<
@@ -136,6 +136,9 @@
 .spec.spec.def:
 	$(WINEBUILD) -w $(DEFS) -o $@ --def $<
 
+.idl.h:
+	$(WIDL) $(IDLFLAGS) -b -h -H $@ $<
+
 .c.ln:
 	$(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 )
 
@@ -225,17 +228,6 @@
 
 .PHONY: clean testclean $(SUBDIRS:%=%/__clean__) $(SUBDIRS:%=%/__testclean__) $(EXTRASUBDIRS:%=%/__clean__)
 
-# Rules for IDL files
-
-idl: $(SUBDIRS:%=%/__idl__)
-
-$(IDL_SRCS:.idl=.h): $(WIDL)
-
-$(SUBDIRS:%=%/__idl__): dummy
-	cd `dirname $@` && $(MAKE) idl
-
-.PHONY: idl
-
 # Rules for installing
 
 $(SUBDIRS:%=%/__install__): dummy
@@ -279,6 +271,8 @@
 
 $(MC_SRCS:.mc=.mc.rc): $(WMC)
 
+$(IDL_SRCS:.idl=.h): $(WIDL)
+
 $(SUBDIRS): dummy
 	@cd $@ && $(MAKE)
 
diff --git a/Makefile.in b/Makefile.in
index c959611..886c56a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -108,14 +108,17 @@
 # Dependencies between directories
 
 all: $(INSTALLSUBDIRS) $(INSTALLBOTHSUBDIRS)
-dlls fonts loader server: libs tools
-programs: dlls libs tools
+dlls: include libs tools
+fonts loader server: libs tools
+programs: dlls include libs tools
+include: libs tools
 tools: libs
 
-dlls/__install-lib__ dlls/__install-dev__: libs tools
+dlls/__install-lib__ dlls/__install-dev__: libs tools include/__install__
+include/__install__: include libs tools
 libs/__install-lib__ libs/__install-dev__: libs
 fonts/__install__ loader/__install__ server/__install__: libs tools
-programs/__install__: libs tools dlls/__install-lib__
+programs/__install__: libs tools include/__install__ dlls/__install-lib__
 tools/__install__: tools
 
 # Test rules
diff --git a/dlls/itss/Makefile.in b/dlls/itss/Makefile.in
index 27c0b8b..cfdd791 100644
--- a/dlls/itss/Makefile.in
+++ b/dlls/itss/Makefile.in
@@ -19,11 +19,4 @@
 
 @MAKE_DLL_RULES@
 
-.SUFFIXES: .idl .h
-
-.idl.h:
-	$(WIDL) $(IDLFLAGS) -b -h -H $@ $<
-
-idl: $(IDL_SRCS:.idl=.h)
-
 ### Dependencies:
diff --git a/dlls/ole32/Makefile.in b/dlls/ole32/Makefile.in
index c277fa9..b4df568 100644
--- a/dlls/ole32/Makefile.in
+++ b/dlls/ole32/Makefile.in
@@ -68,11 +68,4 @@
 
 @MAKE_DLL_RULES@
 
-.SUFFIXES: .idl .h
-
-.idl.h:
-	$(WIDL) $(IDLFLAGS) -b -h -H $@ $<
-
-idl: $(IDL_SRCS:.idl=.h)
-
 ### Dependencies:
diff --git a/include/Makefile.in b/include/Makefile.in
index d4f3ced..d4f7b94 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -295,14 +295,9 @@
 
 @MAKE_RULES@
 
-.SUFFIXES: .idl .h
+all: $(IDL_SRCS:.idl=.h)
 
-.idl.h:
-	$(WIDL) $(IDLFLAGS) -b -h -H $@ $<
-
-idl: $(IDL_SRCS:.idl=.h)
-
-install::
+install:: $(IDL_SRCS:.idl=.h)
 	$(MKINSTALLDIRS) $(includedir) $(includedir)/windows $(includedir)/msvcrt $(includedir)/msvcrt/sys
 	for f in $(WINDOWS_INCLUDES); do $(INSTALL_DATA) $(SRCDIR)/$$f $(includedir)/windows/$$f; done
 	for f in $(MSVCRT_INCLUDES); do $(INSTALL_DATA) $(SRCDIR)/$$f $(includedir)/$$f; done