Alexandre Julliard : tools:
Added make_makefiles tool that updates the list in configure.
ac and runs make_dlls and make_progs.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Aug 28 05:09:29 CDT 2006
Module: wine
Branch: master
Commit: 34618113f4e5f97bc7e5dab6b46e297944aad01a
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=34618113f4e5f97bc7e5dab6b46e297944aad01a
Author: Alexandre Julliard <julliard at winehq.org>
Date: Mon Aug 28 11:57:10 2006 +0200
tools: Added make_makefiles tool that updates the list in configure.ac and runs make_dlls and make_progs.
---
dlls/make_dlls | 37 ++---------------
programs/make_progs | 33 +---------------
tools/make_makefiles | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 113 insertions(+), 63 deletions(-)
create mode 100755 tools/make_makefiles
diff --git a/dlls/make_dlls b/dlls/make_dlls
index 339e28c..4046193 100755
--- a/dlls/make_dlls
+++ b/dlls/make_dlls
@@ -62,9 +62,10 @@ sub update_file($)
# if we are inside the dlls dir, go up one level
if (! -f "configure.ac" && -f "../configure.ac") { chdir(".."); }
-my $makefiles = `find dlls -name Makefile.in -print`;
+my @args = @ARGV;
+if (!@args) { @args = split /\s/, `find dlls -name Makefile.in -print`; }
-foreach my $i (split(/\s/,$makefiles))
+foreach my $i (@args)
{
if ($i =~ /dlls\/(.*)\/tests\/Makefile.in/)
{
@@ -72,7 +73,7 @@ foreach my $i (split(/\s/,$makefiles))
next;
}
- open MAKE,$i;
+ open MAKE, $i or die "cannot open $i\n";
my $module = undef;
my $dir = $i;
@@ -365,8 +366,6 @@ check test:: \$(BUILDSUBDIRS:%=%/__test_
crosstest:: \$(BUILDSUBDIRS:%=%/__crosstest__)
-checklink:: \$(BUILDSUBDIRS:%=%/__checklink__)
-
### Dependencies:
EOF
@@ -409,31 +408,3 @@ print GITIGNORE join("\n", sort @ignores
close GITIGNORE;
update_file("dlls/.gitignore");
-
-################################################################
-# configure.ac file
-
-open OLD_CONFIG, "configure.ac" or die "cannot open configure.ac";
-open NEW_CONFIG, ">configure.ac.new" or die "cannot create configure.ac.new";
-
-while (<OLD_CONFIG>)
-{
- print NEW_CONFIG $_;
- last if /^dlls\/Makefile/;
-}
-
-foreach my $dir (sort (values %directories, values %staticlib_dirs, values %testdirs))
-{
- print NEW_CONFIG "dlls/$dir/Makefile\n";
-}
-
-my $skip=1;
-while (<OLD_CONFIG>)
-{
- $skip = 0 unless /^dlls\//;
- print NEW_CONFIG $_ unless $skip;
-}
-
-close OLD_CONFIG;
-close NEW_CONFIG;
-update_file("configure.ac");
diff --git a/programs/make_progs b/programs/make_progs
index 01788d4..10edb18 100755
--- a/programs/make_progs
+++ b/programs/make_progs
@@ -71,9 +71,10 @@ sub update_file($)
# if we are inside the programs dir, go up one level
if (! -f "configure.ac" && -f "../configure.ac") { chdir(".."); }
-my $makefiles = `find programs -name Makefile.in -print`;
+my @args = @ARGV;
+if (!@args) { @args = split /\s/, `find programs -name Makefile.in -print`; }
-foreach my $i (split(/\s/,$makefiles))
+foreach my $i (@args)
{
my $module;
@@ -225,31 +226,3 @@ print GITIGNORE join("\n", sort @ignores
close GITIGNORE;
update_file("programs/.gitignore");
-
-################################################################
-# configure.ac file
-
-open OLD_CONFIG, "configure.ac" or die "cannot open configure.ac";
-open NEW_CONFIG, ">configure.ac.new" or die "cannot create configure.ac.new";
-
-while (<OLD_CONFIG>)
-{
- print NEW_CONFIG $_;
- last if /^programs\/Makefile/;
-}
-
-foreach my $dir (sort values %directories)
-{
- print NEW_CONFIG "programs/$dir/Makefile\n";
-}
-
-my $skip=1;
-while (<OLD_CONFIG>)
-{
- $skip = 0 unless /^programs\//;
- print NEW_CONFIG $_ unless $skip;
-}
-
-close OLD_CONFIG;
-close NEW_CONFIG;
-update_file("configure.ac");
diff --git a/tools/make_makefiles b/tools/make_makefiles
new file mode 100755
index 0000000..83411bb
--- /dev/null
+++ b/tools/make_makefiles
@@ -0,0 +1,106 @@
+#!/usr/bin/perl -w
+#
+# Build the auto-generated parts of the Wine makefiles.
+#
+# Copyright 2006 Alexandre Julliard
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+#
+
+# update a file if changed
+sub update_file($)
+{
+ my $file = shift;
+ my $ret = system "cmp $file $file.new >/dev/null";
+ if (!$ret)
+ {
+ unlink "$file.new";
+ print "$file is unchanged\n";
+ }
+ else
+ {
+ rename "$file.new", "$file";
+ print "$file updated\n";
+ }
+ return $ret;
+}
+
+# replace some lines in a file between two markers
+sub replace_in_file($$$@)
+{
+ my $file = shift;
+ my $start = shift;
+ my $end = shift;
+
+ open OLD_FILE, "$file" or die "cannot open $file";
+ open NEW_FILE, ">$file.new" or die "cannot create $file.new";
+
+ while (<OLD_FILE>)
+ {
+ last if /$start/;
+ print NEW_FILE $_;
+ }
+
+ print NEW_FILE @_;
+
+ if (defined($end))
+ {
+ my $skip=1;
+ while (<OLD_FILE>)
+ {
+ print NEW_FILE $_ unless $skip;
+ $skip = 0 if /$end/;
+ }
+ }
+
+ close OLD_FILE;
+ close NEW_FILE;
+ return update_file($file);
+}
+
+my (@makefiles, @makerules);
+
+if (-d ".git")
+{
+ @makefiles = map { s/\.in$//; $_; } split /\s/, `git ls-files -c Makefile.in \\*/Makefile.in`;
+ @makerules = map { s/\.in$//; $_; } split /\s/, `git ls-files -c Make\\*rules.in \\*/Make\\*rules.in`;
+}
+else
+{
+ @makefiles = map { s/^\.\/(.*)\.in/$1/; $_; } split(/\s/,`find . -name Makefile.in -print`);
+ @makerules = map { s/^\.\/(.*)\.in/$1/; $_; } split(/\s/,`find . -name Make\\*.rules.in -print`);
+}
+
+
+################################################################
+# update the makefile list in configure.ac
+
+replace_in_file( "configure.ac", '^AC_CONFIG_FILES\(', '\]\)$',
+ "AC_CONFIG_FILES([\n",
+ join ("\n", (sort @makerules), (sort @makefiles) ), "])\n" );
+
+
+################################################################
+# update dlls/Makefile.in
+
+my @dll_makefiles = grep /^dlls\//, @makefiles;
+system "dlls/make_dlls", @dll_makefiles;
+
+
+################################################################
+# update programs/Makefile.in
+
+my @prog_makefiles = grep /^programs\//, @makefiles;
+system "programs/make_progs", @prog_makefiles;
More information about the wine-cvs
mailing list