Added script to update dlls dependencies.
diff --git a/dlls/make_dlls b/dlls/make_dlls
new file mode 100755
index 0000000..05dd5a2
--- /dev/null
+++ b/dlls/make_dlls
@@ -0,0 +1,147 @@
+#!/usr/bin/perl
+#
+# Update the dll dependencies in the dlls main Makefile.in.
+# Must be run in the dlls/ directory of the Wine tree.
+#
+# Copyright 2001 Alexandre Julliard
+#
+
+$makefiles = `find . -name Makefile.in -print`;
+
+%imports = ();
+%directories = ();
+%altnames = ();
+
+foreach $i (split(/\s/,$makefiles))
+{
+ open MAKE,$i;
+ while (<MAKE>)
+ {
+ chop;
+ if (/^MODULE\s*=\s*([a-zA-Z0-9_.]+)/)
+ {
+ $module = $1;
+ ($directories{$module} = $i) =~ s/^\.\/(.*)\/[^\/]+$/$1/;
+ next;
+ }
+ if (/^ALTNAMES\s*=\s*(.*)/)
+ {
+ my @list = split(/\s/,$1);
+ $altnames{$module} = \@list;
+ next;
+ }
+ }
+}
+
+foreach $mod (sort keys %directories)
+{
+ my $spec = sprintf("%s/%s.spec", $directories{$mod}, $mod);
+ open SPEC,$spec or die "cannot open $spec";
+ $imports{$mod} = [ ];
+ while (<SPEC>)
+ {
+ if (/^\#?import\s+(-delay\s+)?([a-zA-Z0-9_]+)\.dll/)
+ {
+ my $imp = $2;
+ push @{$imports{$mod}}, $imp;
+ next;
+ }
+ if (/^\#?import\s+(-delay\s+)?([a-zA-Z0-9_.]+)/)
+ {
+ my $imp = $2;
+ push @{$imports{$mod}}, $imp;
+ next;
+ }
+ }
+}
+
+open OLDMAKE,"Makefile.in" or die "cannot open Makefile.in";
+open NEWMAKE,">Makefile.in.new" or die "cannot create Makefile.in.new";
+
+while (<OLDMAKE>)
+{
+ last if (/^EXTRADLLNAMES/);
+ print NEWMAKE $_;
+}
+close OLDMAKE;
+
+printf NEWMAKE "EXTRADLLNAMES =";
+foreach $extra (values %altnames) { push @extra, @$extra; }
+foreach $extra (sort @extra)
+{
+ printf NEWMAKE " \\\n\t%s", $extra;
+}
+
+printf NEWMAKE "\n\nSUBDIRS =";
+foreach $dir (sort values %directories)
+{
+ printf NEWMAKE " \\\n\t%s", $dir;
+}
+printf NEWMAKE "\n";
+
+print NEWMAKE <<EOF;
+
+\@MAKE_RULES\@
+
+all: \$(DLLS:%=lib%.\@LIBEXT\@) \$(EXTRADLLNAMES:%=lib%.\@LIBEXT\@)
+
+# Map library name to directory
+
+EOF
+
+foreach $mod (sort keys %directories)
+{
+ my $count = 0;
+ printf NEWMAKE "lib%s.\@LIBEXT\@", $mod;
+ foreach $i (sort @{$altnames{$mod}})
+ {
+ if ($count++ >= 3)
+ {
+ $count = 0;
+ printf NEWMAKE " \\\n ";
+ }
+ printf NEWMAKE " lib%s.\@LIBEXT\@", $i;
+ }
+ printf NEWMAKE ": %s/lib%s.\@LIBEXT\@\n", $directories{$mod}, $mod;
+ printf NEWMAKE "\t\$(RM) \$@ && \$(LN_S) %s/lib%s.\@LIBEXT\@ \$@\n\n", $directories{$mod}, $mod;
+}
+
+print NEWMAKE "# Inter-dll dependencies (only necessary for dynamic libs)\n\n";
+
+my @depends = ();
+foreach $mod (sort keys %imports)
+{
+ next unless $#{$imports{$mod}} >= 0;
+ my $dep = sprintf("%s/lib%s.\@LIBEXT\@:", $directories{$mod}, $mod);
+ foreach $i (@{$imports{$mod}})
+ {
+ $dep .= sprintf(" lib%s.\@LIBEXT\@", $i);
+ }
+ push @depends, $dep . "\n";
+}
+print NEWMAKE sort @depends;
+
+print NEWMAKE <<EOF;
+
+\$(DLLFILES): dummy
+ \@cd `dirname \$\@` && \$(MAKE)
+
+\$(DLLFILES:%=%_install_): dummy
+ \@cd `dirname \$\@` && \$(MAKE) install
+
+\$(DLLFILES:%=%_uninstall_): dummy
+ \@cd `dirname \$\@` && \$(MAKE) uninstall
+
+\$(DLLFILES:%=%_checklink_): dummy
+ \@cd `dirname \$\@` && \$(MAKE) checklink
+
+install:: \$(DLLFILES:%=%_install_)
+
+uninstall:: \$(DLLFILES:%=%_uninstall_)
+
+checklink:: \$(DLLFILES:%=%_checklink_)
+EOF
+
+close NEWMAKE;
+rename "Makefile.in.new", "Makefile.in";
+printf "Successfully updated Makefile.in\n";