tools: Update all makefiles in a single pass.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
098adff646
commit
c6cded7460
|
@ -51,10 +51,28 @@ my %ignored_source_files = (
|
||||||
"dlls/wineps.drv/afm2c.c" => 1,
|
"dlls/wineps.drv/afm2c.c" => 1,
|
||||||
"dlls/wineps.drv/mkagl.c" => 1,
|
"dlls/wineps.drv/mkagl.c" => 1,
|
||||||
"include/config.h.in" => 1,
|
"include/config.h.in" => 1,
|
||||||
|
"include/stamp-h.in" => 1,
|
||||||
"programs/winetest/dist.rc" => 1,
|
"programs/winetest/dist.rc" => 1,
|
||||||
"tools/makedep.c" => 1,
|
"tools/makedep.c" => 1,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
my @source_vars = (
|
||||||
|
"BISON_SRCS",
|
||||||
|
"C_SRCS",
|
||||||
|
"FONT_SRCS",
|
||||||
|
"HEADER_SRCS",
|
||||||
|
"IDL_SRCS",
|
||||||
|
"IN_SRCS",
|
||||||
|
"LEX_SRCS",
|
||||||
|
"MANPAGES",
|
||||||
|
"MC_SRCS",
|
||||||
|
"OBJC_SRCS",
|
||||||
|
"PO_SRCS",
|
||||||
|
"RC_SRCS",
|
||||||
|
"SVG_SRCS",
|
||||||
|
"XTEMPLATE_SRCS"
|
||||||
|
);
|
||||||
|
|
||||||
my (@makefiles, %makefiles);
|
my (@makefiles, %makefiles);
|
||||||
|
|
||||||
sub dirname($)
|
sub dirname($)
|
||||||
|
@ -123,64 +141,79 @@ sub replace_in_file($$$@)
|
||||||
return update_file($file);
|
return update_file($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
# replace a variable in a makefile
|
# replace all source variables in a makefile
|
||||||
sub replace_makefile_variable($$)
|
sub replace_makefile_variables($)
|
||||||
{
|
{
|
||||||
my ($file, $var) = @_;
|
my $file = shift;
|
||||||
my $make = $makefiles{$file};
|
my $make = $makefiles{$file};
|
||||||
my $replaced = 0;
|
my $source_vars_regexp = join "|", @source_vars;
|
||||||
my @values;
|
my $modified = 0;
|
||||||
|
my %replaced;
|
||||||
if (defined ${$make}{"=$var"})
|
|
||||||
{
|
|
||||||
@values = @{${$make}{"=$var"}};
|
|
||||||
${$make}{$var} = \@values;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return unless defined ${$make}{$var};
|
|
||||||
undef ${$make}{$var};
|
|
||||||
}
|
|
||||||
|
|
||||||
open NEW_FILE, ">$file.in.new" or die "cannot create $file.in.new";
|
open NEW_FILE, ">$file.in.new" or die "cannot create $file.in.new";
|
||||||
|
|
||||||
open OLD_FILE, "$file.in" or die "cannot open $file.in";
|
open OLD_FILE, "$file.in" or die "cannot open $file.in";
|
||||||
while (<OLD_FILE>)
|
while (<OLD_FILE>)
|
||||||
{
|
{
|
||||||
if (/^\s*($var\s*)=/)
|
if (/^\s*($source_vars_regexp)(\s*)=/)
|
||||||
{
|
{
|
||||||
# try to preserve formatting
|
# try to preserve formatting
|
||||||
my $prefix = $1;
|
my $var = $1;
|
||||||
|
my $spaces = $2;
|
||||||
|
my $replaced = 0;
|
||||||
|
my @values;
|
||||||
|
|
||||||
|
if (defined ${$make}{"=$var"})
|
||||||
|
{
|
||||||
|
@values = @{${$make}{"=$var"}};
|
||||||
|
${$make}{$var} = \@values;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
undef ${$make}{$var};
|
||||||
|
}
|
||||||
my $multiline = /\\$/ || (@values > 1);
|
my $multiline = /\\$/ || (@values > 1);
|
||||||
|
my $old_str = $_;
|
||||||
while (/\\$/)
|
while (/\\$/)
|
||||||
{
|
{
|
||||||
$_ = <OLD_FILE>;
|
$_ = <OLD_FILE>;
|
||||||
last unless $_;
|
last unless $_;
|
||||||
|
$old_str .= $_;
|
||||||
}
|
}
|
||||||
|
my $new_str = "";
|
||||||
if (!@values)
|
if (!@values)
|
||||||
{
|
{
|
||||||
# nothing
|
# nothing
|
||||||
}
|
}
|
||||||
elsif ($multiline)
|
elsif ($multiline)
|
||||||
{
|
{
|
||||||
print NEW_FILE "$var = \\\n\t" . join(" \\\n\t", sort @values) . "\n";
|
$new_str = "$var = \\\n\t" . join(" \\\n\t", sort @values) . "\n";
|
||||||
|
print NEW_FILE $new_str;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print NEW_FILE "$prefix= @values\n";
|
$new_str = "$var$spaces= @values\n";
|
||||||
|
print NEW_FILE $new_str;
|
||||||
}
|
}
|
||||||
$replaced = 1;
|
$modified = 1 if ($old_str ne $new_str);
|
||||||
|
$replaced{$var} = 1;
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
if (/^\@MAKE/ && !$replaced && @values)
|
|
||||||
{
|
|
||||||
print NEW_FILE "$var = \\\n\t" . join(" \\\n\t", sort @values) . "\n";
|
|
||||||
}
|
|
||||||
print NEW_FILE $_;
|
print NEW_FILE $_;
|
||||||
}
|
}
|
||||||
|
foreach my $var (@source_vars)
|
||||||
|
{
|
||||||
|
next if defined $replaced{$var};
|
||||||
|
next unless defined ${$make}{"=$var"};
|
||||||
|
my @values = @{${$make}{"=$var"}};
|
||||||
|
next unless @values;
|
||||||
|
print NEW_FILE "\n$var = \\\n\t" . join(" \\\n\t", sort @values) . "\n";
|
||||||
|
$modified = 1;
|
||||||
|
}
|
||||||
close OLD_FILE;
|
close OLD_FILE;
|
||||||
close NEW_FILE;
|
close NEW_FILE;
|
||||||
return update_file("$file.in");
|
return update_file("$file.in") if $modified;
|
||||||
|
unlink "$file.in.new";
|
||||||
}
|
}
|
||||||
|
|
||||||
# parse the specified makefile and load the variables
|
# parse the specified makefile and load the variables
|
||||||
|
@ -211,7 +244,8 @@ sub parse_makefile($)
|
||||||
${$make{"=flags"}}{"implib"} = 1 if $var eq "IMPORTLIB";
|
${$make{"=flags"}}{"implib"} = 1 if $var eq "IMPORTLIB";
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
if (/^\s*(BISON_SRCS|LEX_SRCS|IDL_SRCS|C_SRCS|OBJC_SRCS|MC_SRCS|RC_SRCS|SVG_SRCS|FONT_SRCS|IN_SRCS|PO_SRCS|PROGRAMS|EXTRA_TARGETS|MANPAGES|EXTRA_OBJS|INSTALL_LIB|INSTALL_DEV)\s*=\s*(.*)/)
|
my $source_vars_regexp = join "|", @source_vars;
|
||||||
|
if (/^\s*($source_vars_regexp|PROGRAMS|EXTRA_TARGETS|EXTRA_OBJS|INSTALL_LIB|INSTALL_DEV)\s*=\s*(.*)/)
|
||||||
{
|
{
|
||||||
my $var = $1;
|
my $var = $1;
|
||||||
my @list = split(/\s+/, $2);
|
my @list = split(/\s+/, $2);
|
||||||
|
@ -510,23 +544,7 @@ sub update_makefiles(@)
|
||||||
|
|
||||||
# update the source variables in all the makefiles
|
# update the source variables in all the makefiles
|
||||||
|
|
||||||
foreach my $file (sort @_)
|
foreach my $file (sort @_) { replace_makefile_variables( $file ); }
|
||||||
{
|
|
||||||
replace_makefile_variable( $file, "LEX_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "BISON_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "MC_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "SVG_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "FONT_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "C_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "OBJC_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "RC_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "IDL_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "HEADER_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "XTEMPLATE_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "PO_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "IN_SRCS" );
|
|
||||||
replace_makefile_variable( $file, "MANPAGES" );
|
|
||||||
}
|
|
||||||
|
|
||||||
push @lines, "dnl End of auto-generated output commands\n";
|
push @lines, "dnl End of auto-generated output commands\n";
|
||||||
replace_in_file( "configure.ac", '^WINE_CONFIG_DLL', '^dnl End of auto-generated output commands\n$', @lines);
|
replace_in_file( "configure.ac", '^WINE_CONFIG_DLL', '^dnl End of auto-generated output commands\n$', @lines);
|
||||||
|
|
Loading…
Reference in New Issue