From 7c3dec9275d654886a0d1e17b222589482f4bb9d Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Fri, 8 Jun 2001 19:09:44 +0000 Subject: [PATCH] Added script to update dlls dependencies. --- dlls/make_dlls | 147 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100755 dlls/make_dlls diff --git a/dlls/make_dlls b/dlls/make_dlls new file mode 100755 index 0000000000..05dd5a25e6 --- /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 () + { + 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 () + { + 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 () +{ + 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 <= 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 <