diff --git a/Make.rules.in b/Make.rules.in
index e8351aef4a3530c3f7f17031181c771a6eb64560..a6c0b563338711a0df5e7fb65cd09ea47f821017 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -36,14 +36,11 @@ LN_S      = @LN_S@
 DIVINCL   = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include
 ALLCFLAGS = $(DIVINCL) $(CFLAGS) $(DEFS) $(OPTIONS) $(X_CFLAGS)
 LDCOMBINE = ld -r
-SONAME    = lib$(MODULE).so
-LDSHARED  = @LDSHARED@
 AR        = ar rc
 RM        = rm -f
 MV        = mv
 MKDIR     = mkdir -p
 C2MAN     = @C2MAN@
-LDCONFIG  = @LDCONFIG@
 MANSPECS  = -w $(TOPSRCDIR)/relay32/gdi32.spec \
 	    -w $(TOPSRCDIR)/relay32/user32.spec \
 	    -w $(TOPSRCDIR)/relay32/comctl32.spec \
@@ -174,6 +171,10 @@ DLLS = \
 
 .PHONY: all install uninstall clean distclean depend dummy
 
+# 'all' target first in case the enclosing Makefile didn't define any target
+
+all: Makefile
+
 # Rule to rebuild the resource compiler
 
 $(WRC) check_wrc:
@@ -199,56 +200,12 @@ $(WINESTUB) check_winestub:
 $(MODULE).o: $(OBJS) Makefile.in $(TOPSRCDIR)/Make.rules.in
 	$(LDCOMBINE) $(OBJS) -o $(MODULE).o
 
-lib$(MODULE).so.$(SOVERSION): $(OBJS) Makefile.in $(TOPSRCDIR)/Make.rules.in
-	$(LDSHARED) $(OBJS) -o $@
-
-lib$(MODULE).so: lib$(MODULE).so.$(SOVERSION)
-	$(RM) $@
-	$(LN_S) lib$(MODULE).so.$(SOVERSION) $@
-
-lib$(MODULE).a: $(OBJS) Makefile.in $(TOPSRCDIR)/Make.rules.in
-	$(RM) $@
-	$(AR) $@ $(OBJS)
-	$(RANLIB) $@
-
 # Rules for makefile
 
 Makefile: Makefile.in $(TOPSRCDIR)/configure
 	@echo Makefile is older than $?, please rerun $(TOPSRCDIR)/configure
 	@exit 1
 
-all: Makefile
-
-# Rules for checking that no imports are missing
-
-IMPORTLIBS = $(IMPORTS:%=$(DLLDIR)/lib%.$(LIBEXT))
-
-checklink_so checklink_a: lib$(MODULE).$(LIBEXT) $(IMPORTLIBS)
-	$(CC) -o checklink $(TOPSRCDIR)/library/checklink.c -L. -l$(MODULE) -L$(DLLDIR) $(IMPORTS:%=-l%) -L$(TOPOBJDIR) -lwine $(LDOPTIONS) $(X_LIBS) $(XLIB) $(LIBS) && $(RM) checklink
-
-checklink:: $(LIBEXT:%=checklink_%)
-
-$(IMPORTLIBS): dummy
-	@cd $(DLLDIR) && $(MAKE) `basename $@`
-
-# Rules for installation
-
-install_so: lib$(MODULE).so.$(SOVERSION)
-	[ -d $(libdir) ] || $(MKDIR) $(libdir)
-	$(INSTALL_PROGRAM) lib$(MODULE).so.$(SOVERSION) $(libdir)/lib$(MODULE).so.$(SOVERSION)
-	cd $(libdir) && $(RM) lib$(MODULE).so && $(LN_S) lib$(MODULE).so.$(SOVERSION) lib$(MODULE).so
-
-install_a: lib$(MODULE).a
-	[ -d $(libdir) ] || $(MKDIR) $(libdir)
-	$(INSTALL_DATA) lib$(MODULE).a $(libdir)/lib$(MODULE).a
-
-uninstall_so uninstall_a:
-	cd $(libdir) && $(RM) lib$(MODULE).so lib$(MODULE).so.$(SOVERSION) lib$(MODULE).a
-
-install:: $(LIBEXT:%=install_%)
-
-uninstall:: $(LIBEXT:%=uninstall_%)
-
 # Rules for auto documentation
 
 man: $(C_SRCS)
@@ -281,6 +238,8 @@ $(SPEC_SRCS:.spec=.spec.c): $(BUILD) $(TOPSRCDIR)/include/builtin16.h $(TOPSRCDI
 
 $(GLUE:.c=.glue.c): $(BUILD) $(TOPSRCDIR)/include/builtin16.h $(TOPSRCDIR)/include/builtin32.h
 
+$(RC_SRCS:.rc=.s): $(WRC)
+
 depend:: $(MAKEDEP) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)
 	$(MAKEDEP) $(DIVINCL) -C$(SRCDIR) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)
 
diff --git a/Makefile.in b/Makefile.in
index 6fac5bec2e86c075204bedbc538fccff1f054eb4..3eef1b49fd4b80faa1840756659d0f3a59833961 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -17,8 +17,11 @@ TOPOBJDIR = .
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 LIBEXT    = @LIBEXT@
+LDSHARED  = @LDSHARED@
+LDCONFIG  = @LDCONFIG@
 MODULE    = wine
 SOVERSION = 1.0
+SONAME    = libwine.so
 
 TOOLSUBDIRS = \
 	tools \
@@ -176,13 +179,22 @@ wine wine.sym: lib$(MODULE).$(LIBEXT) $(DLLOBJS) $(EMUOBJS)
 llib-lwine.ln : $(LIBLINTS) $(X11LINTS)
 	$(LINT) $(ALLLINTFLAGS) -owine $(LIBLINTS) $(X11LINTS)
 
+install_so: lib$(MODULE).so.$(SOVERSION)
+	[ -d $(libdir) ] || $(MKDIR) $(libdir)
+	$(INSTALL_PROGRAM) lib$(MODULE).so.$(SOVERSION) $(libdir)/lib$(MODULE).so.$(SOVERSION)
+	cd $(libdir) && $(RM) lib$(MODULE).so && $(LN_S) lib$(MODULE).so.$(SOVERSION) lib$(MODULE).so
+
+install_a: lib$(MODULE).a
+	[ -d $(libdir) ] || $(MKDIR) $(libdir)
+	$(INSTALL_DATA) lib$(MODULE).a $(libdir)/lib$(MODULE).a
+
 install_wine: wine
 	[ -d $(bindir) ] || $(MKDIR) $(bindir)
 	[ -d $(libdir) ] || $(MKDIR) $(libdir)
 	[ -f wine.sym ] && $(INSTALL_DATA) wine.sym $(libdir)/wine.sym
 	$(INSTALL_PROGRAM) wine $(bindir)/wine
 
-install:: $(PROGRAMS) $(EMU_TARGET:%=install_%)
+install:: $(PROGRAMS) $(EMU_TARGET:%=install_%) $(LIBEXT:%=install_%)
 	[ -d $(bindir) ] || $(MKDIR) $(bindir)
 	$(INSTALL_PROGRAM) server/wineserver $(bindir)/wineserver
 	$(INSTALL_PROGRAM) windows/x11drv/wineclipsrv $(bindir)/wineclipsrv
@@ -192,6 +204,20 @@ uninstall::
 	cd $(libdir) && $(RM) libwine.a libwine.so libwine.so.$(SOVERSION) wine.sym
 	cd $(bindir) && $(RM) wine wineserver wineclipsrv dosmod
 
+lib$(MODULE).so.$(SOVERSION): $(OBJS) Makefile.in Make.rules.in
+	$(LDSHARED) $(OBJS) -o $@
+
+lib$(MODULE).so: lib$(MODULE).so.$(SOVERSION)
+	$(RM) $@ && $(LN_S) lib$(MODULE).so.$(SOVERSION) $@
+
+lib$(MODULE).a: $(OBJS) Makefile.in Make.rules.in
+	$(RM) $@
+	$(AR) $@ $(OBJS)
+	$(RANLIB) $@
+
+checklink::
+	$(CC) -o checklink $(TOPSRCDIR)/library/checklink.c -L. -lwine $(LDOPTIONS) $(X_LIBS) $(XLIB) $(LIBS) && $(RM) checklink
+
 $(X11OBJS) $(EMUOBJS) $(LIBOBJS) $(DLLOBJS) $(PROGRAMS): $(TOOLSUBDIRS) dummy
 	@cd `dirname $@` && $(MAKE) `basename $@`
 
@@ -237,7 +263,7 @@ clean::
 	$(RM) wine wine.sym libwine.so.1.0 TAGS .#*
 
 distclean: clean
-	$(RM) config.* Make.rules include/config.h documentation/wine.man documentation/wine.conf.man
+	$(RM) config.* Make.rules dlls/Makedll.rules include/config.h documentation/wine.man documentation/wine.conf.man
 	$(RM) `find . \( -name Makefile -o -size 0 \) -print`
 
 # We depend on configure above for checks, so we better don't use this rule.
diff --git a/configure b/configure
index f93bf2dd1eddaaea382147f4530753e80655506d..ab5252c8b26edc3617ab7c73fd807131d205a368 100755
--- a/configure
+++ b/configure
@@ -6067,6 +6067,9 @@ fi
 MAKE_RULES=Make.rules
 
 
+MAKE_DLL_RULES=dlls/Makedll.rules
+
+
 trap '' 1 2 15
 cat > confcache <<\EOF
 # This file is a shell script that caches the results of configure
@@ -6174,6 +6177,7 @@ Makefile
 console/Makefile
 controls/Makefile
 debugger/Makefile
+dlls/Makedll.rules
 dlls/Makefile
 dlls/advapi32/Makefile
 dlls/avifil32/Makefile
@@ -6341,6 +6345,8 @@ s%@ALLOCA@%$ALLOCA%g
 s%@GCC_NO_BUILTIN@%$GCC_NO_BUILTIN%g
 /@MAKE_RULES@/r $MAKE_RULES
 s%@MAKE_RULES@%%g
+/@MAKE_DLL_RULES@/r $MAKE_DLL_RULES
+s%@MAKE_DLL_RULES@%%g
 
 CEOF
 EOF
@@ -6387,6 +6393,7 @@ Makefile
 console/Makefile
 controls/Makefile
 debugger/Makefile
+dlls/Makedll.rules
 dlls/Makefile
 dlls/advapi32/Makefile
 dlls/avifil32/Makefile
diff --git a/configure.in b/configure.in
index a92e01a9f1b0a048021ff26a4772f815412966d6..fa08d8fd2393a8632914a82d82005f0ed80d8ff6 100644
--- a/configure.in
+++ b/configure.in
@@ -930,12 +930,16 @@ dnl **** Generate output files ****
 MAKE_RULES=Make.rules
 AC_SUBST_FILE(MAKE_RULES)
 
+MAKE_DLL_RULES=dlls/Makedll.rules
+AC_SUBST_FILE(MAKE_DLL_RULES)
+
 AC_OUTPUT([
 Make.rules
 Makefile
 console/Makefile
 controls/Makefile
 debugger/Makefile
+dlls/Makedll.rules
 dlls/Makefile
 dlls/advapi32/Makefile
 dlls/avifil32/Makefile
diff --git a/dlls/.cvsignore b/dlls/.cvsignore
index f3c7a7c5da68804a1bdf391127ba34aed33c3cca..4ea3f0a7af515b487438ee4e6b526be372005c55 100644
--- a/dlls/.cvsignore
+++ b/dlls/.cvsignore
@@ -1 +1,2 @@
+Makedll.rules
 Makefile
diff --git a/dlls/Makedll.rules.in b/dlls/Makedll.rules.in
new file mode 100644
index 0000000000000000000000000000000000000000..d0ee5d5399fac8ae893b1a1b4cc4fe69e6da25ae
--- /dev/null
+++ b/dlls/Makedll.rules.in
@@ -0,0 +1,61 @@
+# Global rules for building dlls     -*-Makefile-*-
+#
+# Each individual makefile should define the following variables:
+# MODULE       : name of the main module being built
+# SOVERSION    : version of the .so file
+# IMPORTS      : dlls to import (optional)
+#
+# plus all variables required by the global Make.rules.in
+#
+
+DEFS       = @DLLFLAGS@ -D__WINE__
+LIBEXT     = @LIBEXT@
+LDSHARED   = @LDSHARED@
+SONAME     = lib$(MODULE).so
+IMPORTLIBS = $(IMPORTS:%=$(DLLDIR)/lib%.$(LIBEXT))
+
+all: lib$(MODULE).$(LIBEXT)
+
+@MAKE_RULES@
+
+lib$(MODULE).so.$(SOVERSION): $(OBJS) Makefile.in $(TOPSRCDIR)/Make.rules.in
+	$(LDSHARED) $(OBJS) -o $@
+
+lib$(MODULE).so: lib$(MODULE).so.$(SOVERSION)
+	$(RM) $@ && $(LN_S) lib$(MODULE).so.$(SOVERSION) $@
+
+lib$(MODULE).a: $(OBJS) Makefile.in $(TOPSRCDIR)/Make.rules.in
+	$(RM) $@
+	$(AR) $@ $(OBJS)
+	$(RANLIB) $@
+
+# Rules for checking that no imports are missing
+
+IMPORTLIBS = $(IMPORTS:%=$(DLLDIR)/lib%.$(LIBEXT))
+
+checklink:: lib$(MODULE).$(LIBEXT) $(IMPORTLIBS)
+	$(CC) -o checklink $(TOPSRCDIR)/library/checklink.c -L. -l$(MODULE) -L$(DLLDIR) $(IMPORTS:%=-l%) -L$(TOPOBJDIR) -lwine $(LDOPTIONS) $(X_LIBS) $(XLIB) $(LIBS) && $(RM) checklink
+
+$(IMPORTLIBS): dummy
+	@cd $(DLLDIR) && $(MAKE) `basename $@`
+
+# Rules for installation
+
+.PHONY: install_so install_a
+
+install_so: lib$(MODULE).so.$(SOVERSION)
+	[ -d $(libdir) ] || $(MKDIR) $(libdir)
+	$(INSTALL_PROGRAM) lib$(MODULE).so.$(SOVERSION) $(libdir)/lib$(MODULE).so.$(SOVERSION)
+	cd $(libdir) && $(RM) lib$(MODULE).so && $(LN_S) lib$(MODULE).so.$(SOVERSION) lib$(MODULE).so
+
+install_a: lib$(MODULE).a
+	[ -d $(libdir) ] || $(MKDIR) $(libdir)
+	$(INSTALL_DATA) lib$(MODULE).a $(libdir)/lib$(MODULE).a
+
+install:: $(LIBEXT:%=install_%)
+
+uninstall::
+	cd $(libdir) && $(RM) lib$(MODULE).so lib$(MODULE).so.$(SOVERSION) lib$(MODULE).a
+
+clean::
+	$(RM) lib$(MODULE).so.$(SOVERSION)
diff --git a/dlls/advapi32/Makefile.in b/dlls/advapi32/Makefile.in
index 20788d0912ba166fe5798e5a9e1c1f66b8846b0b..3082100089bfa9968a8405981161b555743e7064 100644
--- a/dlls/advapi32/Makefile.in
+++ b/dlls/advapi32/Makefile.in
@@ -19,7 +19,5 @@ all: check_wrc $(MODULE).o
 
 @MAKE_RULES@
 
-$(RC_SRCS:.rc=.s): $(WRC)
-
 ### Dependencies:
 
diff --git a/dlls/avifil32/Makefile.in b/dlls/avifil32/Makefile.in
index 916b0bb3a6159122628cc4968fc8365979e98417..0ed9b8ac5eafad8c6a530fa37b5073ef06d8db91 100644
--- a/dlls/avifil32/Makefile.in
+++ b/dlls/avifil32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = avifil32
 SOVERSION = 1.0
 IMPORTS   = msvfw32 winmm
@@ -13,12 +11,7 @@ SPEC_SRCS = avifil32.spec avifile.spec
 C_SRCS = \
 	avifile.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/comctl32/Makefile.in b/dlls/comctl32/Makefile.in
index 664089d980e4ea3f6736ea41531de8ba2e5090ea..37a685347c35c7c211786a6d3284865ea39ff38d 100644
--- a/dlls/comctl32/Makefile.in
+++ b/dlls/comctl32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = comctl32
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -41,13 +39,8 @@ C_SRCS = \
 RC_SRCS= \
 	rsrc.rc
 
-all: check_wrc lib$(MODULE).$(LIBEXT)
+@MAKE_DLL_RULES@
 
-@MAKE_RULES@
-
-$(RC_SRCS:.rc=.s): $(WRC)
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+all: check_wrc
 
 ### Dependencies:
diff --git a/dlls/commdlg/Makefile.in b/dlls/commdlg/Makefile.in
index 8d912f5fbbae0a9822810c2b3d50905a571d6580..eb2f6ffb10f59a580ff6db4ea63171a212cfc14e 100644
--- a/dlls/commdlg/Makefile.in
+++ b/dlls/commdlg/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = comdlg32
 SOVERSION = 1.0
 IMPORTS   = shell32 ole32 comctl32 winspool winmm
@@ -27,13 +25,8 @@ C_SRCS = \
 RC_SRCS= \
 	rsrc.rc
 
-all: check_wrc lib$(MODULE).$(LIBEXT)
+@MAKE_DLL_RULES@
 
-@MAKE_RULES@
-
-$(RC_SRCS:.rc=.s): $(WRC)
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+all: check_wrc
 
 ### Dependencies:
diff --git a/dlls/dciman32/Makefile.in b/dlls/dciman32/Makefile.in
index 3c50fb7f3484616aa196ffc8167728a9d4004fc9..733127571a655d368154c3e498e08f9488e5dc99 100644
--- a/dlls/dciman32/Makefile.in
+++ b/dlls/dciman32/Makefile.in
@@ -1,19 +1,12 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = dciman32
 SOVERSION = 1.0
 
 SPEC_SRCS = dciman32.spec
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/display/Makefile.in b/dlls/display/Makefile.in
index 48b355fa46d3d0c46f5727763cc00751ee2ec18d..74d5516b788b98ea05f5330756fc9cade8b3a7f9 100644
--- a/dlls/display/Makefile.in
+++ b/dlls/display/Makefile.in
@@ -17,7 +17,5 @@ all: $(MODULE).o
 
 @MAKE_RULES@
 
-$(RC_SRCS:.rc=.s): $(WRC)
-
 ### Dependencies:
 
diff --git a/dlls/dplayx/Makefile.in b/dlls/dplayx/Makefile.in
index e724bd7909fc0859c376569e2f7a8ee2c869c310..58a1ca4802e3b881613f8999d13df7d88c8adf38 100644
--- a/dlls/dplayx/Makefile.in
+++ b/dlls/dplayx/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = dplayx
 SOVERSION = 1.0
 IMPORTS   = ole32
@@ -16,12 +14,8 @@ C_SRCS = dplay.c \
          dplayx_main.c \
          dplayx_global.c
 
-all: lib$(MODULE).$(LIBEXT)
 
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/dsound/Makefile.in b/dlls/dsound/Makefile.in
index f3209a9e7b5a4f0b838a03d0efebd32c8515257f..ebc52e3343b327d2a97f1e73ac1a49d5e00eec62 100644
--- a/dlls/dsound/Makefile.in
+++ b/dlls/dsound/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = dsound
 SOVERSION = 1.0
 
@@ -13,12 +11,7 @@ SPEC_SRCS = \
 C_SRCS = \
 	dsound_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/icmp/Makefile.in b/dlls/icmp/Makefile.in
index a7afaeea36f377099dc53c7e1b1ad02a9f9fba10..16716f223727d187782d7e69b093cbdd3eb864d9 100644
--- a/dlls/icmp/Makefile.in
+++ b/dlls/icmp/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = icmp
 SOVERSION = 1.0
 
@@ -11,12 +9,7 @@ SPEC_SRCS = icmp.spec
 
 C_SRCS = icmp_main.c 
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/imagehlp/Makefile.in b/dlls/imagehlp/Makefile.in
index 15fd64850fcd277be408256d28caace3fd621878..05db3e6642cd307a736356506df77d76a23bffb1 100644
--- a/dlls/imagehlp/Makefile.in
+++ b/dlls/imagehlp/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = imagehlp
 SOVERSION = 1.0
 
@@ -18,12 +16,7 @@ C_SRCS = \
 	modify.c \
 	symbol.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/imm32/Makefile.in b/dlls/imm32/Makefile.in
index 75f6cfbe0de29e0175909aad7d069fbce1497c2c..7688a8c6d968c45ac7b01b527fd7dbebea7b1c2f 100644
--- a/dlls/imm32/Makefile.in
+++ b/dlls/imm32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = imm32
 SOVERSION = 1.0
 
@@ -12,11 +10,6 @@ SPEC_SRCS = imm32.spec
 C_SRCS = \
 	imm.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/lzexpand/Makefile.in b/dlls/lzexpand/Makefile.in
index 141620a72a1a09cd0c6ff37ead6a64d983fc0205..36752e4ba2eb33b59ecd131e6832145767631d46 100644
--- a/dlls/lzexpand/Makefile.in
+++ b/dlls/lzexpand/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = lz32
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = lz32.spec lzexpand.spec
 C_SRCS = \
 	lzexpand_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/mouse/Makefile.in b/dlls/mouse/Makefile.in
index e71586b7556d4aeee80f3ffa646b0d626ff4b6de..baf19e4449b6748e8477b879cb20dfdd80ccb7cc 100644
--- a/dlls/mouse/Makefile.in
+++ b/dlls/mouse/Makefile.in
@@ -17,7 +17,5 @@ all: $(MODULE).o
 
 @MAKE_RULES@
 
-$(RC_SRCS:.rc=.s): $(WRC)
-
 ### Dependencies:
 
diff --git a/dlls/msacm/Makefile.in b/dlls/msacm/Makefile.in
index d5cf9569e894694ea4ffc48d149ade93af52b2b4..e79908520f63774ddbbc25c36042444a3527a940 100644
--- a/dlls/msacm/Makefile.in
+++ b/dlls/msacm/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = msacm
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = msacm.spec
 C_SRCS = \
 	msacm_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/msacm32/Makefile.in b/dlls/msacm32/Makefile.in
index 20fb64fb9be191fe430dbb4e4b10433a8e201c4d..f2eda2b2fd36d646b9181fd7c3993137ff55b514 100644
--- a/dlls/msacm32/Makefile.in
+++ b/dlls/msacm32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = msacm32
 SOVERSION = 1.0
 
@@ -17,12 +15,7 @@ C_SRCS = \
 	msacm32_main.c \
 	stream.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/msnet32/Makefile.in b/dlls/msnet32/Makefile.in
index a3006f0de31626bb40322931ab77b9a436ebbc1f..fc7ae05104d81c6393deab01c7d92f706e090ec6 100644
--- a/dlls/msnet32/Makefile.in
+++ b/dlls/msnet32/Makefile.in
@@ -1,19 +1,12 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = msnet32
 SOVERSION = 1.0
 
 SPEC_SRCS = msnet32.spec
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/msvideo/Makefile.in b/dlls/msvideo/Makefile.in
index 9aa1e1d2828b8019d99bada2ba1e24f5ba80f511..a4b4bc10c6e0bd243f64264ea400ccf26c4af98f 100644
--- a/dlls/msvideo/Makefile.in
+++ b/dlls/msvideo/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = msvfw32
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -13,12 +11,7 @@ SPEC_SRCS = msvfw32.spec msvideo.spec
 C_SRCS = \
 	msvideo_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/odbc32/Makefile.in b/dlls/odbc32/Makefile.in
index 64d911ffd1132f5426fceaf9b1751ce61f29947a..30b75df9f33a0cc74f6f3629dbaee4a72229d36a 100644
--- a/dlls/odbc32/Makefile.in
+++ b/dlls/odbc32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = odbc32
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = odbc32.spec
 C_SRCS = \
 	proxyodbc.c 
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/ole32/Makefile.in b/dlls/ole32/Makefile.in
index 833f28123a77452c875216bd0e1fae794a5833b0..14c1612dc9cf07675e2b85ffb217a7e21c89c549 100644
--- a/dlls/ole32/Makefile.in
+++ b/dlls/ole32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = ole32
 SOVERSION = 1.0
 
@@ -32,12 +30,7 @@ C_SRCS = \
 	storage.c \
 	storage32.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/oleaut32/Makefile.in b/dlls/oleaut32/Makefile.in
index 177a0c705987364eb52108e1acde6b62e48ac8fc..eceba18e38f4f777a76106c6f1bd808e34f386d0 100644
--- a/dlls/oleaut32/Makefile.in
+++ b/dlls/oleaut32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = oleaut32
 SOVERSION = 1.0
 IMPORTS   = ole32 comctl32 winmm
@@ -20,12 +18,7 @@ C_SRCS = \
 	typelib.c \
 	variant.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/olecli/Makefile.in b/dlls/olecli/Makefile.in
index afb440f600456efdc176659a0558cb6ab7cf1ec7..60d875458e9bb3ccdf9eb09cc3e3e2b473f56ed0 100644
--- a/dlls/olecli/Makefile.in
+++ b/dlls/olecli/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = olecli32
 SOVERSION = 1.0
 IMPORTS   = olesvr32 ole32
@@ -13,12 +11,7 @@ SPEC_SRCS = olecli32.spec olecli.spec
 C_SRCS = \
 	olecli_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/oledlg/Makefile.in b/dlls/oledlg/Makefile.in
index afb4dc7b3a3fe63070ea9412d05250d09759f591..7b1efc84e7ee1a193772f14b821dcd9943c4664a 100644
--- a/dlls/oledlg/Makefile.in
+++ b/dlls/oledlg/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = oledlg
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = oledlg.spec
 C_SRCS = \
 	oledlg_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/olepro32/Makefile.in b/dlls/olepro32/Makefile.in
index 462301e8e75a9c2949fca7d570a570a3384581e1..65027bc8c9d7e26c9c9e0ec9e4febce95a221bed 100644
--- a/dlls/olepro32/Makefile.in
+++ b/dlls/olepro32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = olepro32
 SOVERSION = 1.0
 IMPORTS	  = oleaut32 ole32
@@ -12,11 +10,6 @@ SPEC_SRCS = olepro32.spec
 
 C_SRCS = olepro32stubs.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/olesvr/Makefile.in b/dlls/olesvr/Makefile.in
index 9cc1b491f98eb186b2e8170bb100dd1e54c6d173..55d00708cb97d6b1a2c97ad85edb7145180af17b 100644
--- a/dlls/olesvr/Makefile.in
+++ b/dlls/olesvr/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = olesvr32
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = olesvr32.spec olesvr.spec
 C_SRCS = \
 	olesvr_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/psapi/Makefile.in b/dlls/psapi/Makefile.in
index d02fa9108a1ec5153506d48cc928349d2734973d..dd22246a4a558d832fbe0895bfa7f713f79e6120 100644
--- a/dlls/psapi/Makefile.in
+++ b/dlls/psapi/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = psapi
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = psapi.spec
 C_SRCS = \
 	psapi_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/rasapi32/Makefile.in b/dlls/rasapi32/Makefile.in
index ca642bc3ce96a648af4081d781fb9b47689cac11..9dc32f82f1ad64fa7e96612ad5a1754e3c7987b3 100644
--- a/dlls/rasapi32/Makefile.in
+++ b/dlls/rasapi32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = rasapi32
 SOVERSION = 1.0
 
@@ -11,12 +9,7 @@ SPEC_SRCS = rasapi32.spec rasapi16.spec
 
 C_SRCS = rasapi.c 
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/setupx/Makefile.in b/dlls/setupx/Makefile.in
index b1b1bdb70f5be9da61ad74286362077db9c27586..495b46d9a7d357f9192a44a9dcfdb1fcb5877922 100644
--- a/dlls/setupx/Makefile.in
+++ b/dlls/setupx/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = setupx
 SOVERSION = 1.0
 
@@ -12,11 +10,6 @@ SPEC_SRCS = setupx.spec
 C_SRCS = \
 	setupx_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in
index 29c6d0bdc795694d6f47704e5f9d95370e5d9abb..5c71c8c07d477e52468d586c2462a7b6b12c2ed1 100644
--- a/dlls/shell32/Makefile.in
+++ b/dlls/shell32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = shell32
 SOVERSION = 1.0
 IMPORTS   = ole32 comctl32 winmm
@@ -45,17 +43,9 @@ C_SRCS = \
 RC_SRCS= \
 	shres.rc
 
-#GEN_ASM_SRCS = \
-#	shellres.s
+@MAKE_DLL_RULES@
 
-all: check_wrc lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-$(RC_SRCS:.rc=.s): $(WRC)
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+all: check_wrc
 
 ### Dependencies:
 
diff --git a/dlls/sound/Makefile.in b/dlls/sound/Makefile.in
index 9c056b8825860321972b6bf5c5c4f4130843b5a0..e0b7004100f45d6e9009fa47b6b5546b333d34e8 100644
--- a/dlls/sound/Makefile.in
+++ b/dlls/sound/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = sound
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = sound.spec
 C_SRCS = \
 	sound_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/stress/Makefile.in b/dlls/stress/Makefile.in
index 885b6a7b5b15c63fcad906b7fa16d8ae2c61639a..1962b37ab6d4b08ee6946cd19ff4cf16b3f71a64 100644
--- a/dlls/stress/Makefile.in
+++ b/dlls/stress/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = stress
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = stress.spec
 C_SRCS = \
 	stress_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/tapi32/Makefile.in b/dlls/tapi32/Makefile.in
index cc7b74f7b4e4d2e66d160de92bbffc224e645ab6..4933b2c3fd56900f237111ec320d7e47e8869f5a 100644
--- a/dlls/tapi32/Makefile.in
+++ b/dlls/tapi32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = tapi32
 SOVERSION = 1.0
 
@@ -14,12 +12,7 @@ C_SRCS = \
 	line.c \
 	phone.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/version/Makefile.in b/dlls/version/Makefile.in
index 5c31a4e5a4af91687ebcb8b72ad86be558f24eab..5bf2966f0cda19693c8da1c7e7064643cd5f497c 100644
--- a/dlls/version/Makefile.in
+++ b/dlls/version/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = version
 SOVERSION = 1.0
 IMPORTS   = lz32
@@ -16,11 +14,6 @@ C_SRCS = \
 	resource.c \
 	ver16.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/win32s/Makefile.in b/dlls/win32s/Makefile.in
index 22d9bc3ca11ee7831479380e71b188f42c43a3e6..524d4e613516f4c9a1c2d405b632066d4db68c53 100644
--- a/dlls/win32s/Makefile.in
+++ b/dlls/win32s/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = w32skrnl
 SOVERSION = 1.0
 
@@ -14,12 +12,7 @@ C_SRCS = \
 	w32sys.c \
 	win32s16.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/win87em/Makefile.in b/dlls/win87em/Makefile.in
index 36eef493792b02b21344a89ce7710b355de929b1..6cf2a37bad57a366e3b65e8246620fba668cb492 100644
--- a/dlls/win87em/Makefile.in
+++ b/dlls/win87em/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = win87em
 SOVERSION = 1.0
 
@@ -12,11 +10,6 @@ SPEC_SRCS = win87em.spec
 C_SRCS = \
 	emulate.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/windebug/Makefile.in b/dlls/windebug/Makefile.in
index ca2e742989f09b83233476225332b628c1cbe80d..74fedfd0bb606acbedaa1f23619bafbd9909a5da 100644
--- a/dlls/windebug/Makefile.in
+++ b/dlls/windebug/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = windebug
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = windebug.spec
 C_SRCS = \
 	windebug_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/wing/Makefile.in b/dlls/wing/Makefile.in
index 830b1bf2b0a0243f740fe9c519b70920177d633a..fdfe0d1bcf99884aa643ca0329efd3d5f8c2a77c 100644
--- a/dlls/wing/Makefile.in
+++ b/dlls/wing/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = wing
 SOVERSION = 1.0
 
@@ -12,12 +10,7 @@ SPEC_SRCS = wing.spec
 C_SRCS = \
 	wing_main.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/winmm/Makefile.in b/dlls/winmm/Makefile.in
index bb502bf6030f279fff866eec6ad820f54d9f9dc3..60af6452f078902c36e58a3a8ac07c6868100722 100644
--- a/dlls/winmm/Makefile.in
+++ b/dlls/winmm/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = winmm
 SOVERSION = 1.0
 WRCEXTRA  = -s -pwinmm
@@ -27,8 +25,6 @@ GLUE =  lolvldrv.c \
 RC_SRCS= \
 	winmm_res.rc
 
-all: check_wrc $ lib$(MODULE).$(LIBEXT)
-
 SUBDIRS = \
 	joystick \
 	mcianim \
@@ -40,14 +36,11 @@ SUBDIRS = \
 	wavemap \
 	wineoss
 
-$(SUBDIRS): dummy
-	@cd $@; $(MAKE)
-
-@MAKE_RULES@
+@MAKE_DLL_RULES@
 
-$(RC_SRCS:.rc=.s): $(WRC)
+all: check_wrc
 
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+$(SUBDIRS): dummy
+	@cd $@ && $(MAKE)
 
 ### Dependencies:
diff --git a/dlls/winmm/joystick/Makefile.in b/dlls/winmm/joystick/Makefile.in
index 028d2d37ad81a41fabb65264aa9e591e6d3f1fb3..462395f79efc34f124c213c3601b5b750b78a92c 100644
--- a/dlls/winmm/joystick/Makefile.in
+++ b/dlls/winmm/joystick/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = joystick.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	joystick.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/mcianim/Makefile.in b/dlls/winmm/mcianim/Makefile.in
index d54653a3bd3c88cd9177caba4aaaf2a70ec94ef4..07128d2cf6e314e7a03d1858854379cfedee9e7f 100644
--- a/dlls/winmm/mcianim/Makefile.in
+++ b/dlls/winmm/mcianim/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = mcianim.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	mcianim.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/mciavi/Makefile.in b/dlls/winmm/mciavi/Makefile.in
index 1a485172bfa590361095d5f84348ff29dd4eea2f..2cd327b23d052ceb8a2f11fc09d42c54731ca555 100644
--- a/dlls/winmm/mciavi/Makefile.in
+++ b/dlls/winmm/mciavi/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = mciavi.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	mciavi.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/mcicda/Makefile.in b/dlls/winmm/mcicda/Makefile.in
index da823f641bb6a490e947c5e66591c8af744f734d..ac1a3cd6b7b35c8cc935af298076604b10fd69d0 100644
--- a/dlls/winmm/mcicda/Makefile.in
+++ b/dlls/winmm/mcicda/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = mcicda.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	mcicda.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/mciseq/Makefile.in b/dlls/winmm/mciseq/Makefile.in
index e4136b7869b6df37e8dacd07353627259dd55288..f26be6adf4e429a24190cbb733b4914cf912a33e 100644
--- a/dlls/winmm/mciseq/Makefile.in
+++ b/dlls/winmm/mciseq/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = mciseq.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	mcimidi.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/mciwave/Makefile.in b/dlls/winmm/mciwave/Makefile.in
index 26e6f69785cecf97a6de248070dce77765660388..93075b4b99d55b9873c9b3e779abbdb9963bef7d 100644
--- a/dlls/winmm/mciwave/Makefile.in
+++ b/dlls/winmm/mciwave/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = mciwave.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	mciwave.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/midimap/Makefile.in b/dlls/winmm/midimap/Makefile.in
index b50fe2829478aaa47e2a2137d4dc3d1db417426b..827783af4c446dbb693037f6bfea96ba62077c55 100644
--- a/dlls/winmm/midimap/Makefile.in
+++ b/dlls/winmm/midimap/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = midimap.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	midimap.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/wavemap/Makefile.in b/dlls/winmm/wavemap/Makefile.in
index 6b4b323ce455d8cbb1bbe664c5092262e77a1e10..e5194fe83484f4ae9bfd4a2816b9dca25d28e442 100644
--- a/dlls/winmm/wavemap/Makefile.in
+++ b/dlls/winmm/wavemap/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = msacm.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -14,11 +12,6 @@ SPEC_SRCS = \
 C_SRCS = \
 	wavemap.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winmm/wineoss/Makefile.in b/dlls/winmm/wineoss/Makefile.in
index bb1f5e71e724498d78b2c709a747edaff21cb6ee..6672f2741ad53fa46f36b673a489842501bc3b91 100644
--- a/dlls/winmm/wineoss/Makefile.in
+++ b/dlls/winmm/wineoss/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = wineoss.drv
 SOVERSION = 1.0
 IMPORTS   = winmm
@@ -19,11 +17,6 @@ C_SRCS = \
 	mmaux.c \
 	oss.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winsock/Makefile.in b/dlls/winsock/Makefile.in
index 7cbba7d456fc48769e4e7a13d794120466bc1377..29e6b2b9687005b57bf2d75506fc7d05fdc24f47 100644
--- a/dlls/winsock/Makefile.in
+++ b/dlls/winsock/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = wsock32
 SOVERSION = 1.0
 
@@ -13,11 +11,6 @@ C_SRCS = \
 	async.c \
 	socket.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/dlls/winspool/Makefile.in b/dlls/winspool/Makefile.in
index 7ada8095606421edd322a7b8f14a2ad5c4eff74a..c948ec55fc6fb451ee066a38c6076e614823d007 100644
--- a/dlls/winspool/Makefile.in
+++ b/dlls/winspool/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = winspool
 SOVERSION = 1.0
 
@@ -13,12 +11,7 @@ C_SRCS = \
 	info.c \
 	wspool.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
 
diff --git a/dlls/wnaspi32/Makefile.in b/dlls/wnaspi32/Makefile.in
index 7ca0a9a979dadb9dfc9b5efbe18b6d6bcf72bc29..bbbb5f99ba07bde257ea020295afe0be8dc88cfd 100644
--- a/dlls/wnaspi32/Makefile.in
+++ b/dlls/wnaspi32/Makefile.in
@@ -1,9 +1,7 @@
-DEFS      = @DLLFLAGS@ -D__WINE__
 TOPSRCDIR = @top_srcdir@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-LIBEXT    = @LIBEXT@
 MODULE    = wnaspi32
 SOVERSION = 1.0
 
@@ -12,11 +10,6 @@ SPEC_SRCS = wnaspi32.spec
 C_SRCS = \
 	winaspi32.c
 
-all: lib$(MODULE).$(LIBEXT)
-
-@MAKE_RULES@
-
-clean::
-	$(RM) lib$(MODULE).$(LIBEXT).$(SOVERSION)
+@MAKE_DLL_RULES@
 
 ### Dependencies:
diff --git a/resources/Makefile.in b/resources/Makefile.in
index cba959ec201f4b30a9fd1d3d95393333c220692d..388a1e6eec883aac12482adacc7601ecdadbbe28 100644
--- a/resources/Makefile.in
+++ b/resources/Makefile.in
@@ -13,6 +13,4 @@ all: check_wrc $(MODULE).o
 
 @MAKE_RULES@
 
-$(RC_SRCS:.rc=.s): $(WRC)
-
 ### Dependencies: