Fixed make install target to work even when nothing has been compiled
yet.
Added install-lib and install-dev targets to allow partial
installations; moved winemaker.man and winelauncher.in to better fit
in the new install categories.

diff --git a/Make.rules.in b/Make.rules.in
index c3d77fb..2e5556a 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -20,6 +20,7 @@
 # DELAYIMPORTS : dlls to import in delayed mode
 # SUBDIRS      : subdirectories that contain a Makefile
 # EXTRASUBDIRS : subdirectories that do not contain a Makefile
+# INSTALLSUBDIRS : subdirectories to run make install/uninstall into
 # PLTESTS      : Perl test scripts
 # CTESTS       : C test sources
 
@@ -94,10 +95,10 @@
 
 # Installation infos
 
-INSTALL         = @INSTALL@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT  = @INSTALL_SCRIPT@
-INSTALL_DATA    = @INSTALL_DATA@
+INSTALL         = @INSTALL@ $(INSTALL_FLAGS)
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(INSTALL_PROGRAM_FLAGS)
+INSTALL_SCRIPT  = @INSTALL_SCRIPT@ $(INSTALL_SCRIPT_FLAGS)
+INSTALL_DATA    = @INSTALL_DATA@ $(INSTALL_DATA_FLAGS)
 prefix          = @prefix@
 exec_prefix     = @exec_prefix@
 bindir          = @bindir@
@@ -157,8 +158,6 @@
 .pl.ok:
 	$(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
 
-.PHONY: all install uninstall clean distclean depend dummy check test testclean
-
 # 'all' target first in case the enclosing Makefile didn't define any target
 
 all: Makefile
@@ -166,6 +165,8 @@
 filter:
 	@$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all
 
+.PHONY: all filter
+
 # Rule for main module intermediate object
 
 $(MODULE).tmp.o: $(SPEC_SRCS:.spec=.spec.o) $(OBJS) Makefile.in
@@ -217,6 +218,8 @@
 doc-html: $(C_SRCS) $(SUBDIRS:%=%/__doc_html__)
 	if [ -n "$(C_SRCS)" ]; then $(MKINSTALLDIRS) $(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
 
+.PHONY: man doc-html $(SUBDIRS:%=%/__man__) $(SUBDIRS:%=%/__doc_html__)
+
 # Rule for linting
 
 $(MODULE).ln : $(LINTS)
@@ -232,9 +235,11 @@
 
 # Rules for Windows API checking
 
-winapi_check::
+winapi_check:: dummy
 	$(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) .
 
+.PHONY: winapi_check
+
 # Rules for dependencies
 
 $(SUBDIRS:%=%/__depend__): $(MAKEDEP) dummy
@@ -243,6 +248,8 @@
 depend: $(MAKEDEP) $(SUBDIRS:%=%/__depend__)
 	$(MAKEDEP) $(DIVINCL) -C$(SRCDIR) $(C_SRCS) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) $(EXTRA_SRCS) $(CTESTS)
 
+.PHONY: depend $(SUBDIRS:%=%/__depend__)
+
 # Rules for cleaning
 
 $(SUBDIRS:%=%/__clean__): dummy
@@ -260,14 +267,22 @@
 clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__)
 	$(RM) $(CLEAN_FILES) $(GEN_C_SRCS) $(GEN_ASM_SRCS) $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res) $(MC_SRCS:.mc=.mc.rc) $(TESTRESULTS) $(TESTLIST) $(TESTPROGRAM) $(PROGRAMS)
 
+.PHONY: clean testclean $(SUBDIRS:%=%/__clean__) $(SUBDIRS:%=%/__testclean__) $(EXTRASUBDIRS:%=%/__clean__)
+
 # Rules for installing
 
-$(SUBDIRS:%=%/__install__): dummy
+$(INSTALLSUBDIRS:%=%/__install__): dummy
 	cd `dirname $@` && $(MAKE) install
 
-$(SUBDIRS:%=%/__uninstall__): dummy
+$(INSTALLSUBDIRS:%=%/__uninstall__): dummy
 	cd `dirname $@` && $(MAKE) uninstall
 
+install:: $(INSTALLSUBDIRS:%=%/__install__)
+
+uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__)
+
+.PHONY: install uninstall $(INSTALLSUBDIRS:%=%/__install__) $(INSTALLSUBDIRS:%=%/__uninstall__)
+
 # Rules for testing
 
 check test:: $(TESTRESULTS)
@@ -275,6 +290,8 @@
 $(SUBDIRS:%=%/__test__): dummy
 	@cd `dirname $@` && $(MAKE) test
 
+.PHONY: check test $(SUBDIRS:%=%/__test__)
+
 $(PLTESTS:.c=.ok): $(WINETEST)
 $(CTESTS:.c=.ok): $(TESTPROGRAM)$(DLLEXT)
 
@@ -317,4 +334,6 @@
 
 dummy:
 
+.PHONY: dummy $(SUBDIRS)
+
 # End of global rules
diff --git a/Makefile.in b/Makefile.in
index bfbdba9..19ba92c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -5,6 +5,8 @@
 # distclean:       also remove all files created by configure
 # test:            run tests
 # testclean:       clean test results to force running all tests again
+# install-lib:     install libraries needed to run applications
+# install-dev:     install development environment
 # install:         install everything
 # uninstall:       uninstall everything
 # depend:          create the dependencies
@@ -23,32 +25,39 @@
 LDD       = @LDD@
 MODULE    = none
 
-# Sub-directories containing stand-alone programs
-PROGSUBDIRS = \
-	server
-
-# Sub-directories containing programs that use some Wine dlls
-LIBPROGSUBDIRS = \
-	miscemu \
-	programs
-
-# Sub-directories containing libraries (not dlls) to build
-LIBSUBDIRS = \
-	library \
-	ole \
-	tsx11 \
-	unicode
-
-# Sub-directories to run make depend/clean/install into
+# Sub-directories to run make depend/clean into
 SUBDIRS = \
-	$(LIBPROGSUBDIRS) \
-	$(LIBSUBDIRS) \
-	$(PROGSUBDIRS) \
 	dlls \
 	documentation \
 	include \
+	library \
+	miscemu \
+	ole \
+	programs \
+	server \
+	tools \
+	tsx11 \
+	unicode
+
+# Sub-directories to install for install-lib
+INSTALLLIBSUBDIRS = \
+	dlls \
+	documentation \
+	library \
+	miscemu \
+	programs \
+	server \
+	tsx11 \
+	unicode
+
+# Sub-directories to install for install-dev
+INSTALLDEVSUBDIRS = \
+	include \
+	ole \
 	tools
 
+INSTALLSUBDIRS = $(INSTALLDEVSUBDIRS) $(INSTALLLIBSUBDIRS)
+
 # Sub-directories to run make test into
 TESTSUBDIRS = \
 	dlls \
@@ -57,7 +66,7 @@
 EMUOBJS = \
 	miscemu/miscemu.o
 
-all: Make.rules $(PROGSUBDIRS) $(LIBPROGSUBDIRS) wine
+all: Make.rules wine
 	@echo "Wine build complete."
 
 WINAPI_CHECK_EXTRA_FLAGS = --global
@@ -71,7 +80,13 @@
 wine: $(WINEWRAPPER)
 	$(RM) $@ && $(LN_S) $(WINEWRAPPER) $@
 
-install:: all $(SUBDIRS:%=%/__install__)
+# Installation rules
+
+install-lib:: $(INSTALLLIBSUBDIRS:%=%/__install__)
+
+install-dev:: $(INSTALLDEVSUBDIRS:%=%/__install__)
+
+install::
 	-$(LDCONFIG)
 	@if test -n "`LANG=C $(LDD) $(bindir)/wine|grep not.found`";	\
 	then								\
@@ -85,17 +100,25 @@
 		echo "*************************************************" ; \
 	fi
 
-uninstall:: $(SUBDIRS:%=%/__uninstall__)
+.PHONY: install-lib install-dev
 
 # Dependencies between directories
 
-$(LIBPROGSUBDIRS): tools dlls $(LIBSUBDIRS)
+all: dlls library miscemu ole programs server tools tsx11 unicode
+dlls: library ole tools tsx11 unicode
+server: library tools unicode
+miscemu programs: dlls library ole tools tsx11 unicode
+tools: library unicode
 
-$(PROGSUBDIRS): tools $(LIBSUBDIRS)
+dlls/__install__: library ole tools tsx11 unicode
+server/__install__: library tools unicode
+miscemu/__install__ programs/__install__: library ole tools tsx11 unicode dlls/__install__
+library/__install__: library
+ole/__install__: ole
+tools/__install__: tools
+unicode/__install__: unicode
 
-dlls: tools $(LIBSUBDIRS)
-
-tools: $(LIBSUBDIRS)
+# Test rules
 
 checklink::
 	$(CC) -o checklink $(TOPSRCDIR)/library/checklink.c && $(RM) checklink
@@ -111,6 +134,10 @@
 
 check test:: $(TESTSUBDIRS:%=%/__test__)
 
+.PHONY: checklink test_environment
+
+# Misc rules
+
 TAGS etags:
 	etags `find $(TOPSRCDIR) -name '*.[ch]' -a -not -name '*.spec.c' -a -not -name '*.glue.c' -a -not -name '*.dbg.c' -print`
 
@@ -130,4 +157,6 @@
 	$(RM) -r autom4te.cache
 	$(RM) `find . \( -name Makefile -o -size 0 \) -print`
 
+.PHONY: manpages htmlpages distclean
+
 ### Dependencies:
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 4332809..0cac621 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -113,6 +113,8 @@
 
 BUILDSUBDIRS = $(BASEDIRS) $(EXTRADIRS)
 
+INSTALLSUBDIRS = $(BUILDSUBDIRS)
+
 # Main target
 
 @MAKE_RULES@
@@ -632,6 +634,101 @@
 wsock32/wsock32.dll$(DLLEXT): wsock32
 x11drv/x11drv.dll$(DLLEXT): x11drv
 
+# Install dependencies
+
+advapi32/__install__: advapi32.dll$(DLLEXT)
+avicap32/__install__: avicap32.dll$(DLLEXT)
+avifil32/__install__: avifil32.dll$(DLLEXT)
+comcat/__install__: comcat.dll$(DLLEXT)
+comctl32/__install__: comctl32.dll$(DLLEXT)
+commdlg/__install__: comdlg32.dll$(DLLEXT)
+crtdll/__install__: crtdll.dll$(DLLEXT)
+crypt32/__install__: crypt32.dll$(DLLEXT)
+dciman32/__install__: dciman32.dll$(DLLEXT)
+ddraw/__install__: ddraw.dll$(DLLEXT)
+devenum/__install__: devenum.dll$(DLLEXT)
+dinput/__install__: dinput.dll$(DLLEXT)
+dinput8/__install__: dinput8.dll$(DLLEXT)
+dplay/__install__: dplay.dll$(DLLEXT)
+dplayx/__install__: dplayx.dll$(DLLEXT)
+dsound/__install__: dsound.dll$(DLLEXT)
+gdi/__install__: gdi32.dll$(DLLEXT)
+glu32/__install__: glu32.dll$(DLLEXT)
+icmp/__install__: icmp.dll$(DLLEXT)
+msacm/imaadp32/__install__: imaadp32.acm$(DLLEXT)
+imagehlp/__install__: imagehlp.dll$(DLLEXT)
+imm32/__install__: imm32.dll$(DLLEXT)
+winmm/joystick/__install__: joystick.drv$(DLLEXT)
+kernel/__install__: kernel32.dll$(DLLEXT)
+lzexpand/__install__: lz32.dll$(DLLEXT)
+mapi32/__install__: mapi32.dll$(DLLEXT)
+winmm/mcianim/__install__: mcianim.drv$(DLLEXT)
+winmm/mciavi/__install__: mciavi.drv$(DLLEXT)
+winmm/mcicda/__install__: mcicda.drv$(DLLEXT)
+winmm/mciseq/__install__: mciseq.drv$(DLLEXT)
+winmm/mciwave/__install__: mciwave.drv$(DLLEXT)
+winmm/midimap/__install__: midimap.drv$(DLLEXT)
+mpr/__install__: mpr.dll$(DLLEXT)
+winmm/wavemap/__install__: msacm.drv$(DLLEXT)
+msacm/__install__: msacm32.dll$(DLLEXT)
+msacm/msadp32/__install__: msadp32.acm$(DLLEXT)
+msdmo/__install__: msdmo.dll$(DLLEXT)
+msacm/msg711/__install__: msg711.acm$(DLLEXT)
+msimg32/__install__: msimg32.dll$(DLLEXT)
+msisys/__install__: msisys.ocx$(DLLEXT)
+msnet32/__install__: msnet32.dll$(DLLEXT)
+msrle32/__install__: msrle32.dll$(DLLEXT)
+msvcrt/__install__: msvcrt.dll$(DLLEXT)
+msvcrt20/__install__: msvcrt20.dll$(DLLEXT)
+msvideo/__install__: msvfw32.dll$(DLLEXT)
+netapi32/__install__: netapi32.dll$(DLLEXT)
+ntdll/__install__: ntdll.dll$(DLLEXT)
+odbc32/__install__: odbc32.dll$(DLLEXT)
+ole32/__install__: ole32.dll$(DLLEXT)
+oleaut32/__install__: oleaut32.dll$(DLLEXT)
+olecli/__install__: olecli32.dll$(DLLEXT)
+oledlg/__install__: oledlg.dll$(DLLEXT)
+olepro32/__install__: olepro32.dll$(DLLEXT)
+olesvr/__install__: olesvr32.dll$(DLLEXT)
+opengl32/__install__: opengl32.dll$(DLLEXT)
+psapi/__install__: psapi.dll$(DLLEXT)
+qcap/__install__: qcap.dll$(DLLEXT)
+quartz/__install__: quartz.dll$(DLLEXT)
+rasapi32/__install__: rasapi32.dll$(DLLEXT)
+richedit/__install__: riched32.dll$(DLLEXT)
+rpcrt4/__install__: rpcrt4.dll$(DLLEXT)
+serialui/__install__: serialui.dll$(DLLEXT)
+setupapi/__install__: setupapi.dll$(DLLEXT)
+shdocvw/__install__: shdocvw.dll$(DLLEXT)
+shell32/__install__: shell32.dll$(DLLEXT)
+shfolder/__install__: shfolder.dll$(DLLEXT)
+shlwapi/__install__: shlwapi.dll$(DLLEXT)
+snmpapi/__install__: snmpapi.dll$(DLLEXT)
+sti/__install__: sti.dll$(DLLEXT)
+tapi32/__install__: tapi32.dll$(DLLEXT)
+ttydrv/__install__: ttydrv.dll$(DLLEXT)
+twain/__install__: twain_32.dll$(DLLEXT)
+url/__install__: url.dll$(DLLEXT)
+urlmon/__install__: urlmon.dll$(DLLEXT)
+user/__install__: user32.dll$(DLLEXT)
+version/__install__: version.dll$(DLLEXT)
+win32s/__install__: w32skrnl.dll$(DLLEXT)
+winmm/winearts/__install__: winearts.drv$(DLLEXT)
+winedos/__install__: winedos.dll$(DLLEXT)
+msacm/winemp3/__install__: winemp3.acm$(DLLEXT)
+winmm/wineoss/__install__: wineoss.drv$(DLLEXT)
+wineps/__install__: wineps.dll$(DLLEXT)
+wininet/__install__: wininet.dll$(DLLEXT)
+winmm/__install__: winmm.dll$(DLLEXT)
+winnls/__install__: winnls32.dll$(DLLEXT)
+winspool/__install__: winspool.drv$(DLLEXT)
+wintrust/__install__: wintrust.dll$(DLLEXT)
+winaspi/__install__: wnaspi32.dll$(DLLEXT)
+wow32/__install__: wow32.dll$(DLLEXT)
+winsock/__install__: ws2_32.dll$(DLLEXT)
+wsock32/__install__: wsock32.dll$(DLLEXT)
+x11drv/__install__: x11drv.dll$(DLLEXT)
+
 # Inter-dll dependencies
 
 advapi32: kernel32.dll$(DLLEXT) ntdll.dll$(DLLEXT)
@@ -755,10 +852,11 @@
 libkernel32.dll.$(LIBEXT): kernel
 	$(RM) $@ && $(LN_S) kernel/kernel32.dll$(DLLEXT) $@
 
-uninstall-links: dummy
+uninstall::
 	$(RM) $(LINKABLE_DLLS:%=$(libdir)/lib%.$(LIBEXT))
 
-install-links: uninstall-links dummy
+install::
+	$(RM) $(LINKABLE_DLLS:%=$(libdir)/lib%.$(LIBEXT))
 	cd $(libdir) && if [ "$(dlldir)" = "$(libdir)/wine" ]; \
 	then \
 	  $(LN_S) wine/ntdll.dll$(DLLEXT) libntdll.dll.$(LIBEXT); \
@@ -777,11 +875,13 @@
 $(BUILDSUBDIRS:%=%/__checklink__): dummy
 	@cd `dirname $@` && $(MAKE) checklink
 
-install:: $(BUILDSUBDIRS:%=%/__install__) install-links
-
-uninstall:: $(BUILDSUBDIRS:%=%/__uninstall__) uninstall-links
+uninstall::
 	-rmdir $(dlldir)
 
 check test:: $(BUILDSUBDIRS:%=%/__test__)
 
 checklink:: $(BUILDSUBDIRS:%=%/__checklink__)
+
+.PHONY: checklink $(BUILDSUBDIRS:%=%/__checklink__)
+
+### Dependencies:
diff --git a/dlls/make_dlls b/dlls/make_dlls
index ba663c5..42d4145 100755
--- a/dlls/make_dlls
+++ b/dlls/make_dlls
@@ -134,6 +134,8 @@
 
 
 BUILDSUBDIRS = \$(BASEDIRS) \$(EXTRADIRS)
+
+INSTALLSUBDIRS = \$(BUILDSUBDIRS)
 EOF
 
 ################################################################
@@ -198,6 +200,13 @@
     printf NEWMAKE "%s/%s\$(DLLEXT): %s\n", $directories{$mod}, $mod, $directories{$mod};
 }
 
+print NEWMAKE "\n# Install dependencies\n\n";
+
+foreach my $mod (sort keys %directories)
+{
+    printf NEWMAKE "%s/__install__: %s\$(DLLEXT)\n", $directories{$mod}, $mod;
+}
+
 print NEWMAKE "\n# Inter-dll dependencies\n\n";
 
 my @depends = ();
@@ -249,10 +258,11 @@
 }
 
 print NEWMAKE <<EOF;
-uninstall-links: dummy
+uninstall::
 	\$(RM) \$(LINKABLE_DLLS:%=\$(libdir)/lib%.\$(LIBEXT))
 
-install-links: uninstall-links dummy
+install::
+	\$(RM) \$(LINKABLE_DLLS:%=\$(libdir)/lib%.\$(LIBEXT))
 	cd \$(libdir) && if [ "\$(dlldir)" = "\$(libdir)/wine" ]; \\
 	then \\
 EOF
@@ -276,14 +286,16 @@
 \$(BUILDSUBDIRS:%=%/__checklink__): dummy
 	\@cd `dirname \$\@` && \$(MAKE) checklink
 
-install:: \$(BUILDSUBDIRS:%=%/__install__) install-links
-
-uninstall:: \$(BUILDSUBDIRS:%=%/__uninstall__) uninstall-links
+uninstall::
 	-rmdir \$(dlldir)
 
 check test:: \$(BUILDSUBDIRS:%=%/__test__)
 
 checklink:: \$(BUILDSUBDIRS:%=%/__checklink__)
+
+.PHONY: checklink \$(BUILDSUBDIRS:%=%/__checklink__)
+
+### Dependencies:
 EOF
 
 close NEWMAKE;
diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in
index 742caf6..ed7debd 100644
--- a/dlls/shell32/Makefile.in
+++ b/dlls/shell32/Makefile.in
@@ -49,6 +49,13 @@
 
 @MAKE_DLL_RULES@
 
+install::
+	$(MKINSTALLDIRS) $(bindir)
+	$(INSTALL_SCRIPT) $(TOPSRCDIR)/tools/wineshelllink $(bindir)/wineshelllink
+
+uninstall::
+	$(RM) $(bindir)/wineshelllink
+
 # Special rules for 16-bit resource files
 
 version16.res: version16.rc
diff --git a/documentation/Makefile.in b/documentation/Makefile.in
index 8ea01ff..a0a6164 100644
--- a/documentation/Makefile.in
+++ b/documentation/Makefile.in
@@ -68,15 +68,12 @@
 	sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' $(SRCDIR)/wine.man.in >$@ || $(RM) $@
 
 install:: $(MAN_TARGETS)
-	$(INSTALL) -d $(mandir)/man$(prog_manext)
-	$(INSTALL) -d $(mandir)/man$(conf_manext)
+	$(MKINSTALLDIRS) $(mandir)/man$(prog_manext) $(mandir)/man$(conf_manext)
 	$(INSTALL_DATA) wine.man $(mandir)/man$(prog_manext)/wine.$(prog_manext)
-	$(INSTALL_DATA) $(SRCDIR)/winemaker.man $(mandir)/man$(prog_manext)/winemaker.$(prog_manext)
 	$(INSTALL_DATA) $(SRCDIR)/wine.conf.man $(mandir)/man$(conf_manext)/wine.conf.$(conf_manext)
 
 uninstall::
 	$(RM) $(mandir)/man$(prog_manext)/wine.$(prog_manext)
-	$(RM) $(mandir)/man$(prog_manext)/winemaker.$(prog_manext)
 	$(RM) $(mandir)/man$(conf_manext)/wine.conf.$(conf_manext)
 
 clean::
diff --git a/library/Makefile.in b/library/Makefile.in
index 59a21b1..6b72f7d 100644
--- a/library/Makefile.in
+++ b/library/Makefile.in
@@ -34,16 +34,18 @@
 libwine.dll: $(OBJS)
 	$(DLLWRAP) $(DLLWRAPFLAGS) --export-all --implib libwine.a -o libwine.dll $(OBJS) -lmsvcrt
 
-install_so: libwine.so.$(SOVERSION)
+.PHONY: install_so install_a install_dll
+
+install_so: libwine.so.$(SOVERSION) dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_PROGRAM) libwine.so.$(SOVERSION) $(libdir)/libwine.so.$(SOVERSION)
 	cd $(libdir) && $(RM) libwine.so && $(LN_S) libwine.so.$(SOVERSION) libwine.so
 
-install_a: libwine.a
+install_a: libwine.a dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_DATA) libwine.a $(libdir)/libwine.a
 
-install_dll: libwine.dll
+install_dll: libwine.dll dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_DATA) libwine.dll $(libdir)/libwine.dll
 
diff --git a/ole/Makefile.in b/ole/Makefile.in
index f8e5499..884ab21 100644
--- a/ole/Makefile.in
+++ b/ole/Makefile.in
@@ -17,7 +17,7 @@
 	$(AR) $@ uuid.o
 	$(RANLIB) $@
 
-install: libwine_uuid.a
+install:: libwine_uuid.a
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_DATA) libwine_uuid.a $(libdir)/libwine_uuid.a
 
diff --git a/programs/.cvsignore b/programs/.cvsignore
index a2bb395..d20217d 100644
--- a/programs/.cvsignore
+++ b/programs/.cvsignore
@@ -1,3 +1,4 @@
 Makefile
 Makeprog.rules
 wineapploader
+winelauncher
diff --git a/programs/Makefile.in b/programs/Makefile.in
index 7b0a713..b0bb486 100644
--- a/programs/Makefile.in
+++ b/programs/Makefile.in
@@ -29,10 +29,12 @@
 	winhelp \
 	winver
 
+# Sub-directories to run make install into
+INSTALLSUBDIRS = $(SUBDIRS)
+
 # Programs to install in bin directory
 # We don't install everything to avoid polluting /usr/bin too much
 INSTALLPROGS = \
-	expand \
 	notepad \
 	progman \
 	regedit \
@@ -54,11 +56,14 @@
 
 @MAKE_RULES@
 
-all: wineapploader $(SUBDIRS) $(SYMLINKS:%=%$(DLLEXT))
+all: wineapploader winelauncher $(SUBDIRS) $(SYMLINKS:%=%$(DLLEXT))
 
 wineapploader: wineapploader.in
 	sed -e 's,@bindir\@,$(bindir),g' $(SRCDIR)/wineapploader.in >$@ || $(RM) $@
 
+winelauncher: winelauncher.in
+	sed -e 's,@bindir\@,$(bindir),g' -e 's,@libdir\@,$(libdir),g' -e 's,@dlldir\@,$(dlldir),g' $(SRCDIR)/winelauncher.in >$@ || $(RM) $@
+
 # Rules for installation
 
 .PHONY: install-apploader install-progs install-progs.so $(INSTALLPROGS:%=%/__installprog__)
@@ -75,14 +80,16 @@
 
 install-progs: # nothing to do here
 
-install:: $(SUBDIRS:%=%/__install__) install-progs$(DLLEXT)
+install:: winelauncher install-progs$(DLLEXT)
+	$(MKINSTALLDIRS) $(bindir)
+	$(INSTALL_SCRIPT) winelauncher $(bindir)/winelauncher
 
-uninstall:: $(SUBDIRS:%=%/__uninstall__)
-	$(RM) $(bindir)/wineapploader $(INSTALLPROGS:%=$(bindir)/%)
+uninstall::
+	$(RM) $(bindir)/wineapploader $(bindir)/winelauncher $(INSTALLPROGS:%=$(bindir)/%)
 	-rmdir $(dlldir)
 
 clean::
-	$(RM) wineapploader $(SYMLINKS)
+	$(RM) wineapploader winelauncher $(SYMLINKS)
 
 # Rules for testing
 
diff --git a/programs/Makeprog.rules.in b/programs/Makeprog.rules.in
index 9d9615e..1ae0d3e 100644
--- a/programs/Makeprog.rules.in
+++ b/programs/Makeprog.rules.in
@@ -55,11 +55,11 @@
 
 .PHONY: install_prog install_prog.so uninstall_prog uninstall_prog.so
 
-install_prog.so: $(MODULE).so
+install_prog.so: $(MODULE).so dummy
 	$(MKINSTALLDIRS) $(dlldir)
 	$(INSTALL_PROGRAM) $(MODULE).so $(dlldir)/$(MODULE).so
 
-install_prog: $(MODULE)
+install_prog: $(MODULE) dummy
 	$(MKINSTALLDIRS) $(bindir)
 	$(INSTALL_PROGRAM) $(MODULE) $(bindir)/$(MODULE)
 
diff --git a/tools/winelauncher.in b/programs/winelauncher.in
similarity index 100%
rename from tools/winelauncher.in
rename to programs/winelauncher.in
diff --git a/tools/.cvsignore b/tools/.cvsignore
index a98a6c6..3d055f7 100644
--- a/tools/.cvsignore
+++ b/tools/.cvsignore
@@ -2,4 +2,3 @@
 bin2res
 fnt2bdf
 makedep
-winelauncher
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 34dd48f..2fdd45b 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -4,7 +4,7 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 
-PROGRAMS = makedep fnt2bdf bin2res winelauncher
+PROGRAMS = makedep fnt2bdf bin2res
 MODULE   = none
 
 C_SRCS = makedep.c fnt2bdf.c bin2res.c
@@ -15,11 +15,7 @@
 	wmc \
 	wrc
 
-INSTALLSUBDIRS = \
-	winebuild \
-	winedump \
-	wmc \
-	wrc
+INSTALLSUBDIRS = $(SUBDIRS)
 
 EXTRASUBDIRS = \
 	winapi_check \
@@ -27,7 +23,7 @@
 	winapi_check/win32 \
 	wineconf.libs
 
-all: $(PROGRAMS) winebuild winedump wmc wrc
+all: $(PROGRAMS) $(SUBDIRS)
 
 @MAKE_RULES@
 
@@ -40,17 +36,12 @@
 bin2res: bin2res.o
 	$(CC) $(CFLAGS) -o bin2res bin2res.o
 
-winelauncher: winelauncher.in
-	sed -e 's,@bindir\@,$(bindir),g' -e 's,@libdir\@,$(libdir),g' -e 's,@dlldir\@,$(dlldir),g' $(SRCDIR)/winelauncher.in >$@ || $(RM) $@
-
-install:: $(PROGRAMS) $(INSTALLSUBDIRS:%=%/__install__)
-	$(MKINSTALLDIRS) $(bindir)
-	$(INSTALL_PROGRAM) fnt2bdf $(bindir)/fnt2bdf
-	$(INSTALL_SCRIPT) winelauncher $(bindir)/winelauncher
+install::
+	$(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext)
 	$(INSTALL_SCRIPT) $(SRCDIR)/winemaker $(bindir)/winemaker
-	$(INSTALL_SCRIPT) $(SRCDIR)/wineshelllink $(bindir)/wineshelllink
+	$(INSTALL_DATA) $(SRCDIR)/winemaker.man $(mandir)/man$(prog_manext)/winemaker.$(prog_manext)
 
-uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__)
-	$(RM) $(bindir)/fnt2bdf $(bindir)/winelauncher $(bindir)/winemaker $(bindir)/wineshelllink
+uninstall::
+	$(RM) $(bindir)/winemaker $(mandir)/man$(prog_manext)/winemaker.$(prog_manext)
 
 ### Dependencies:
diff --git a/tools/winapi/Makefile.in b/tools/winapi/Makefile.in
index ae552fa..86870b8 100644
--- a/tools/winapi/Makefile.in
+++ b/tools/winapi/Makefile.in
@@ -3,15 +3,11 @@
 TOPOBJDIR = ../..
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
-
-PROGRAMS =
-MODULE   = none
-
-all: $(PROGRAMS)
+MODULE    = none
 
 @MAKE_RULES@
 
-install:: $(PROGRAMS)
+install::
 	$(MKINSTALLDIRS) $(bindir)
 	$(INSTALL_SCRIPT) $(SRCDIR)/trampoline $(bindir)/make_filter
 	$(INSTALL_SCRIPT) $(SRCDIR)/trampoline $(bindir)/winapi_check
diff --git a/tools/winebuild/Makefile.in b/tools/winebuild/Makefile.in
index bbe098f..af89daf 100644
--- a/tools/winebuild/Makefile.in
+++ b/tools/winebuild/Makefile.in
@@ -4,7 +4,7 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 
-PROGRAMS = winebuild
+PROGRAMS = winebuild$(EXEEXT)
 MODULE   = none
 
 C_SRCS = \
@@ -22,14 +22,14 @@
 
 @MAKE_RULES@
 
-winebuild: $(OBJS)
-	$(CC) $(CFLAGS) -o winebuild $(OBJS) $(LIBWINE) $(LIBUNICODE) $(LDFLAGS)
+winebuild$(EXEEXT): $(OBJS)
+	$(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBWINE) $(LIBUNICODE) $(LDFLAGS)
 
 install:: $(PROGRAMS)
 	$(MKINSTALLDIRS) $(bindir)
-	$(INSTALL_PROGRAM) winebuild $(bindir)/winebuild
+	$(INSTALL_PROGRAM) winebuild$(EXEEXT) $(bindir)/winebuild$(EXEEXT)
 
 uninstall::
-	$(RM) $(bindir)/winebuild
+	$(RM) $(bindir)/winebuild$(EXEEXT)
 
 ### Dependencies:
diff --git a/documentation/winemaker.man b/tools/winemaker.man
similarity index 100%
rename from documentation/winemaker.man
rename to tools/winemaker.man
diff --git a/tools/wmc/Makefile.in b/tools/wmc/Makefile.in
index 3fc6557..0d65de8 100644
--- a/tools/wmc/Makefile.in
+++ b/tools/wmc/Makefile.in
@@ -40,9 +40,9 @@
 install:: $(PROGRAMS)
 	$(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext)
 	$(INSTALL_DATA) $(SRCDIR)/wmc.man $(mandir)/man$(prog_manext)/wmc.$(prog_manext)
-	$(INSTALL_PROGRAM) wmc $(bindir)/wmc
+	$(INSTALL_PROGRAM) wmc$(EXEEXT) $(bindir)/wmc$(EXEEXT)
 
 uninstall::
-	$(RM) $(bindir)/wmc $(mandir)/man$(prog_manext)/wmc.$(prog_manext)
+	$(RM) $(bindir)/wmc$(EXEEXT) $(mandir)/man$(prog_manext)/wmc.$(prog_manext)
 
 ### Dependencies:
diff --git a/tools/wrc/Makefile.in b/tools/wrc/Makefile.in
index a4baae6..a101e78 100644
--- a/tools/wrc/Makefile.in
+++ b/tools/wrc/Makefile.in
@@ -52,9 +52,9 @@
 install:: $(PROGRAMS)
 	$(MKINSTALLDIRS) $(bindir) $(mandir)/man$(prog_manext)
 	$(INSTALL_DATA) $(SRCDIR)/wrc.man $(mandir)/man$(prog_manext)/wrc.$(prog_manext)
-	$(INSTALL_PROGRAM) wrc $(bindir)/wrc
+	$(INSTALL_PROGRAM) wrc$(EXEEXT) $(bindir)/wrc$(EXEEXT)
 
 uninstall::
-	$(RM) $(bindir)/wrc $(mandir)/man$(prog_manext)/wrc.$(prog_manext)
+	$(RM) $(bindir)/wrc$(EXEEXT) $(mandir)/man$(prog_manext)/wrc.$(prog_manext)
 
 ### Dependencies:
diff --git a/tsx11/Makefile.in b/tsx11/Makefile.in
index 23c9ac3..b9faf5e 100644
--- a/tsx11/Makefile.in
+++ b/tsx11/Makefile.in
@@ -39,16 +39,18 @@
 libwine_tsx11.dll: $(OBJS)
 	$(DLLWRAP) $(DLLWRAPFLAGS) --export-all --implib libwine_tsx11.a -o libwine_tsx11.dll $(OBJS)
 
-install_so: libwine_tsx11.so.$(SOVERSION)
+.PHONY: install_so install_a
+
+install_so: libwine_tsx11.so.$(SOVERSION) dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_PROGRAM) libwine_tsx11.so.$(SOVERSION) $(libdir)/libwine_tsx11.so.$(SOVERSION)
 	cd $(libdir) && $(RM) libwine_tsx11.so && $(LN_S) libwine_tsx11.so.$(SOVERSION) libwine_tsx11.so
 
-install_a: libwine_tsx11.a
+install_a: libwine_tsx11.a dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_DATA) libwine_tsx11.a $(libdir)/libwine_tsx11.a
 
-install:: all $(LIBEXT:%=install_%)
+install:: $(LIBEXT:%=install_%)
 
 uninstall::
 	$(RM) $(libdir)/libwine_tsx11.a $(libdir)/libwine_tsx11.so $(libdir)/libwine_tsx11.so.$(SOVERSION)
diff --git a/unicode/Makefile.in b/unicode/Makefile.in
index e119840..a13f444 100644
--- a/unicode/Makefile.in
+++ b/unicode/Makefile.in
@@ -99,16 +99,18 @@
 libwine_unicode.dll: $(OBJS) wine_unicode.def
 	$(DLLWRAP) $(DLLWRAPFLAGS) --def $(SRCDIR)/wine_unicode.def --implib libwine_unicode.a -o libwine_unicode.dll $(OBJS)
 
-install_so: libwine_unicode.so.$(SOVERSION)
+.PHONY: install_so install_a install_dll
+
+install_so: libwine_unicode.so.$(SOVERSION) dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_PROGRAM) libwine_unicode.so.$(SOVERSION) $(libdir)/libwine_unicode.so.$(SOVERSION)
 	cd $(libdir) && $(RM) libwine_unicode.so && $(LN_S) libwine_unicode.so.$(SOVERSION) libwine_unicode.so
 
-install_a: libwine_unicode.a
+install_a: libwine_unicode.a dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_DATA) libwine_unicode.a $(libdir)/libwine_unicode.a
 
-install_dll: libwine_unicode.dll
+install_dll: libwine_unicode.dll dummy
 	$(MKINSTALLDIRS) $(libdir)
 	$(INSTALL_DATA) libwine_unicode.dll $(libdir)/libwine_unicode.dll