Module: wine Branch: master Commit: 0b334e04df76e468d2bf99dfb7d672666c7657cd URL: http://source.winehq.org/git/wine.git/?a=commit;h=0b334e04df76e468d2bf99dfb7...
Author: Rob Shearman robertshearman@gmail.com Date: Thu Sep 25 16:44:07 2008 +0100
msvcmaker: Generate .h files from .idl files specified in IDL_H_SRCS makefile rules.
---
tools/winapi/msvcmaker | 40 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 40 insertions(+), 0 deletions(-)
diff --git a/tools/winapi/msvcmaker b/tools/winapi/msvcmaker index cc55837..120540f 100755 --- a/tools/winapi/msvcmaker +++ b/tools/winapi/msvcmaker @@ -238,6 +238,11 @@ MAKEFILE_IN: foreach my $makefile_in_file (@makefile_in_files) { $resource_files = [sort(@{$vars{RC_SRCS}})]; }
+ my $idl_h_files = []; + if(exists($vars{IDL_H_SRCS})) { + $idl_h_files = [sort(@{$vars{IDL_H_SRCS}})]; + } + my $project = $module; $project =~ s/.(?:dll|exe|lib)$//; $project =~ y/./_/; @@ -271,6 +276,7 @@ MAKEFILE_IN: foreach my $makefile_in_file (@makefile_in_files) { ($source_files, my $local_source_files) = filter_files($source_files, "$dir2/"); ($header_files, my $local_header_files) = filter_files($header_files, "$dir2/"); ($resource_files, my $local_resource_files) = filter_files($resource_files, "$dir2/"); + ($idl_h_files, my $local_idl_h_files) = filter_files($idl_h_files, "$dir2/");
$modules{$module}{wine} = 1; $modules{$module}{winetest} = 0; @@ -282,6 +288,7 @@ MAKEFILE_IN: foreach my $makefile_in_file (@makefile_in_files) { $modules{$module}{header_files} = $local_header_files; $modules{$module}{resource_files} = $local_resource_files; $modules{$module}{imports} = []; + $modules{$module}{idl_h_files} = $local_idl_h_files; } }
@@ -295,6 +302,7 @@ MAKEFILE_IN: foreach my $makefile_in_file (@makefile_in_files) { $modules{$module}{header_files} = $header_files; $modules{$module}{resource_files} = $resource_files; $modules{$module}{imports} = [@imports]; + $modules{$module}{idl_h_files} = $idl_h_files; }
$wine_test_dsp_files{"wineruntests.dsp"}{files} = ["runtests.c"]; @@ -322,6 +330,7 @@ foreach my $dsp_file (keys(%wine_test_dsp_files)) { my $source_files = []; my $header_files = []; my $resource_files = []; + my $idl_h_files = [];
my @tests = ();
@@ -368,6 +377,7 @@ foreach my $dsp_file (keys(%wine_test_dsp_files)) { $modules{$module}{header_files} = $header_files; $modules{$module}{resource_files} = $resource_files; $modules{$module}{imports} = [@imports]; + $modules{$module}{idl_h_files} = [];
$modules{$module}{tests} = [@tests]; } @@ -433,6 +443,7 @@ sub _generate_dsp($$) { my @source_files = @{$modules{$module}{source_files}}; my @header_files = @{$modules{$module}{header_files}}; my @resource_files = @{$modules{$module}{resource_files}}; + my @idl_h_files = @{$modules{$module}{idl_h_files}};
if ($project !~ /^wine(?:build|runtests|test)?$/ && $project !~ /^(?:gdi32)_.+?$/ && @@ -850,6 +861,35 @@ sub _generate_dsp($$) {
print OUT "# End Source File\r\n"; } + + foreach my $idl_h_file (@idl_h_files) { + $idl_h_file =~ s%/%\%g; + if($idl_h_file !~ /^./) { + $idl_h_file = ".\$idl_h_file"; + } + + print OUT "# Begin Source File\r\n"; + print OUT "\r\n"; + + print OUT "SOURCE=$idl_h_file\r\n"; + + my $basename = $idl_h_file; + $basename =~ s/.idl$//; + + print OUT "# PROP Ignore_Default_Tool 1\r\n"; + print OUT "# Begin Custom Build\r\n"; + print OUT "InputPath=$idl_h_file\r\n"; + print OUT "\r\n"; + print OUT "BuildCmds= \\r\n"; + print OUT "\tmidl /nologo /I $wine_include_dir /client none /server none /notlb $idl_h_file /h $basename.h\r\n"; + print OUT "\r\n"; + print OUT ""$basename.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"\r\n"; + print OUT " $(BuildCmds)\r\n"; + print OUT "# End Custom Build\r\n"; + + print OUT "# End Source File\r\n"; + } + print OUT "# End Group\r\n";
print OUT "# Begin Group "Header Files"\r\n";