configure: Generate the list of top-level directories to install.
diff --git a/Makefile.in b/Makefile.in
index ed30f1b..0b2c6c0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -27,8 +27,6 @@
 MODULE    = none
 PROGRAMS  = wine
 
-FONTSSUBDIRS = @FONTSSUBDIRS@
-
 # Sub-directories to run make depend/clean into
 SUBDIRS = \
 	dlls \
@@ -42,15 +40,7 @@
 	tools
 
 # Sub-directories to run make install/uninstall into
-INSTALLSUBDIRS = \
-	$(FONTSSUBDIRS) \
-	dlls \
-	include \
-	libs \
-	loader \
-	programs \
-	server \
-	tools
+INSTALLSUBDIRS = @ALL_TOP_DIRS@
 
 # Sub-directories to run make test into
 TESTSUBDIRS = dlls
diff --git a/configure b/configure
index 3519811..b8bffa4 100755
--- a/configure
+++ b/configure
@@ -753,7 +753,6 @@
 ft_devel
 FREETYPELIBS
 FREETYPEINCL
-FONTSSUBDIRS
 ESDCONFIG
 ESDINCL
 ESDLIBS
@@ -775,6 +774,7 @@
 ALL_MAKERULES
 ALL_MAKEFILES
 ALL_MAKEFILE_DEPENDS
+ALL_TOP_DIRS
 ALL_DLL_DIRS
 ALL_IMPLIB_DIRS
 ALL_TEST_DIRS
@@ -14163,8 +14163,6 @@
 
             FREETYPEINCL="$ac_freetype_incl"
 
-            FONTSSUBDIRS="fonts"
-
 	fi
     fi
 fi
@@ -14181,6 +14179,7 @@
 esac
 fi
 
+test "x$FREETYPELIBS" = "x" && enable_fonts=${enable_fonts:-no}
 
 { echo "$as_me:$LINENO: checking for parport header/ppdev.h" >&5
 echo $ECHO_N "checking for parport header/ppdev.h... $ECHO_C" >&6; }
@@ -22173,6 +22172,8 @@
 ALL_MAKEFILE_DEPENDS="# Makefile dependencies"
 
 
+ALL_TOP_DIRS=""
+
 ALL_DLL_DIRS=""
 
 ALL_IMPLIB_DIRS=""
@@ -22249,7 +22250,8 @@
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	dlls/Makefile"
-
+test "x$enable_dlls" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	dlls"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 dlls/Makefile: dlls/Makefile.in Make.rules"
 ac_config_files="$ac_config_files dlls/Makefile"
@@ -25104,28 +25106,32 @@
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	documentation/Makefile"
-
+test "x$enable_documentation" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	documentation"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 documentation/Makefile: documentation/Makefile.in Make.rules"
 ac_config_files="$ac_config_files documentation/Makefile"
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	fonts/Makefile"
-
+test "x$enable_fonts" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	fonts"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 fonts/Makefile: fonts/Makefile.in Make.rules"
 ac_config_files="$ac_config_files fonts/Makefile"
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	include/Makefile"
-
+test "x$enable_include" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	include"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 include/Makefile: include/Makefile.in Make.rules"
 ac_config_files="$ac_config_files include/Makefile"
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	libs/Makefile"
-
+test "x$enable_libs" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	libs"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 libs/Makefile: libs/Makefile.in Make.rules"
 ac_config_files="$ac_config_files libs/Makefile"
@@ -25153,14 +25159,16 @@
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	loader/Makefile"
-
+test "x$enable_loader" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	loader"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 loader/Makefile: loader/Makefile.in Make.rules"
 ac_config_files="$ac_config_files loader/Makefile"
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	programs/Makefile"
-
+test "x$enable_programs" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	programs"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 programs/Makefile: programs/Makefile.in Make.rules"
 ac_config_files="$ac_config_files programs/Makefile"
@@ -25583,14 +25591,16 @@
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	server/Makefile"
-
+test "x$enable_server" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	server"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 server/Makefile: server/Makefile.in Make.rules"
 ac_config_files="$ac_config_files server/Makefile"
 
 ALL_MAKEFILES="$ALL_MAKEFILES \\
 	tools/Makefile"
-
+test "x$enable_tools" != xno && ALL_TOP_DIRS="$ALL_TOP_DIRS \\
+	tools"
 ALL_MAKEFILE_DEPENDS="$ALL_MAKEFILE_DEPENDS
 tools/Makefile: tools/Makefile.in Make.rules"
 ac_config_files="$ac_config_files tools/Makefile"
@@ -26894,7 +26904,6 @@
 ft_devel!$ft_devel$ac_delim
 FREETYPELIBS!$FREETYPELIBS$ac_delim
 FREETYPEINCL!$FREETYPEINCL$ac_delim
-FONTSSUBDIRS!$FONTSSUBDIRS$ac_delim
 ESDCONFIG!$ESDCONFIG$ac_delim
 ESDINCL!$ESDINCL$ac_delim
 ESDLIBS!$ESDLIBS$ac_delim
@@ -26916,6 +26925,7 @@
 ALL_MAKERULES!$ALL_MAKERULES$ac_delim
 ALL_MAKEFILES!$ALL_MAKEFILES$ac_delim
 ALL_MAKEFILE_DEPENDS!$ALL_MAKEFILE_DEPENDS$ac_delim
+ALL_TOP_DIRS!$ALL_TOP_DIRS$ac_delim
 ALL_DLL_DIRS!$ALL_DLL_DIRS$ac_delim
 ALL_IMPLIB_DIRS!$ALL_IMPLIB_DIRS$ac_delim
 ALL_TEST_DIRS!$ALL_TEST_DIRS$ac_delim
diff --git a/configure.ac b/configure.ac
index 22741be..8877ded 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1020,12 +1020,12 @@
 	    AC_DEFINE(HAVE_FREETYPE, 1, [Define if FreeType 2 is installed])
             AC_SUBST(FREETYPELIBS,"$ac_freetype_libs")
             AC_SUBST(FREETYPEINCL,"$ac_freetype_incl")
-            AC_SUBST(FONTSSUBDIRS,"fonts")
 	fi
     fi
 fi
 WINE_ERROR_WITH(freetype,[test "x$FREETYPELIBS" = "x"],[FreeType development files not found.
 Fonts will not be built. Dialog text may be invisible or unaligned.])
+test "x$FREETYPELIBS" = "x" && enable_fonts=${enable_fonts:-no}
 
 dnl **** Check for parport (currently Linux only) ****
 AC_CACHE_CHECK([for parport header/ppdev.h], ac_cv_c_ppdev,
@@ -1675,6 +1675,7 @@
 AC_SUBST(ALL_MAKEFILES,"")
 AC_SUBST(ALL_MAKEFILE_DEPENDS,["# Makefile dependencies"])
 
+AC_SUBST(ALL_TOP_DIRS,"")
 AC_SUBST(ALL_DLL_DIRS,"")
 AC_SUBST(ALL_IMPLIB_DIRS,"")
 AC_SUBST(ALL_TEST_DIRS,"")
@@ -1700,7 +1701,7 @@
 WINE_CONFIG_MAKERULES([programs/Makeprog.rules],[MAKE_PROG_RULES],[Make.rules])
 
 WINE_CONFIG_MAKEFILE([Makefile],[Make.rules])
-WINE_CONFIG_MAKEFILE([dlls/Makefile],[Make.rules])
+WINE_CONFIG_MAKEFILE([dlls/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/acledit/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/activeds/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/actxprxy/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
@@ -2057,15 +2058,15 @@
 WINE_CONFIG_MAKEFILE([dlls/ws2_32/tests/Makefile],[dlls/Maketest.rules],[dlls],[ALL_TEST_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/wsock32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
 WINE_CONFIG_MAKEFILE([dlls/wtsapi32/Makefile],[dlls/Makedll.rules],[dlls],[ALL_DLL_DIRS])
-WINE_CONFIG_MAKEFILE([documentation/Makefile],[Make.rules])
-WINE_CONFIG_MAKEFILE([fonts/Makefile],[Make.rules])
-WINE_CONFIG_MAKEFILE([include/Makefile],[Make.rules])
-WINE_CONFIG_MAKEFILE([libs/Makefile],[Make.rules])
+WINE_CONFIG_MAKEFILE([documentation/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
+WINE_CONFIG_MAKEFILE([fonts/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
+WINE_CONFIG_MAKEFILE([include/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
+WINE_CONFIG_MAKEFILE([libs/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
 WINE_CONFIG_MAKEFILE([libs/port/Makefile],[Make.rules])
 WINE_CONFIG_MAKEFILE([libs/wine/Makefile],[Make.rules])
 WINE_CONFIG_MAKEFILE([libs/wpp/Makefile],[Make.rules])
-WINE_CONFIG_MAKEFILE([loader/Makefile],[Make.rules])
-WINE_CONFIG_MAKEFILE([programs/Makefile],[Make.rules])
+WINE_CONFIG_MAKEFILE([loader/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
+WINE_CONFIG_MAKEFILE([programs/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
 WINE_CONFIG_MAKEFILE([programs/clock/Makefile],[programs/Makeprog.rules],[programs],[ALL_PROGRAM_DIRS,ALL_PROGRAM_INSTALL_DIRS])
 WINE_CONFIG_MAKEFILE([programs/cmd/Makefile],[programs/Makeprog.rules],[programs],[ALL_PROGRAM_DIRS,ALL_PROGRAM_INSTALL_DIRS])
 WINE_CONFIG_MAKEFILE([programs/cmdlgtst/Makefile],[programs/Makeprog.rules],[programs],[ALL_PROGRAM_DIRS])
@@ -2111,8 +2112,8 @@
 WINE_CONFIG_MAKEFILE([programs/wordpad/Makefile],[programs/Makeprog.rules],[programs],[ALL_PROGRAM_DIRS,ALL_PROGRAM_INSTALL_DIRS])
 WINE_CONFIG_MAKEFILE([programs/write/Makefile],[programs/Makeprog.rules],[programs],[ALL_PROGRAM_DIRS,ALL_PROGRAM_INSTALL_DIRS])
 WINE_CONFIG_MAKEFILE([programs/xcopy/Makefile],[programs/Makeprog.rules],[programs],[ALL_PROGRAM_DIRS,ALL_PROGRAM_INSTALL_DIRS])
-WINE_CONFIG_MAKEFILE([server/Makefile],[Make.rules])
-WINE_CONFIG_MAKEFILE([tools/Makefile],[Make.rules])
+WINE_CONFIG_MAKEFILE([server/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
+WINE_CONFIG_MAKEFILE([tools/Makefile],[Make.rules],[],[ALL_TOP_DIRS])
 WINE_CONFIG_MAKEFILE([tools/widl/Makefile],[Make.rules])
 WINE_CONFIG_MAKEFILE([tools/winebuild/Makefile],[Make.rules])
 WINE_CONFIG_MAKEFILE([tools/winedump/Makefile],[Make.rules])
diff --git a/tools/make_makefiles b/tools/make_makefiles
index 6358103..53ed0ba 100755
--- a/tools/make_makefiles
+++ b/tools/make_makefiles
@@ -281,6 +281,7 @@
             $args .= ",ALL_PROGRAM_BIN_INSTALL_DIRS" if $bin_install{$name};
             $args .= "]";
         }
+        elsif ($file =~ /^[^\/]*\/Makefile$/) { $args = ",[],[ALL_TOP_DIRS]"; }
         push @lines, "WINE_CONFIG_MAKEFILE([$file],[$rules]$args)\n";
     }