Rob Shearman : msvcmaker: Generate .h files from . idl files specified in IDL_H_SRCS makefile rules.
Alexandre Julliard
julliard at winehq.org
Tue Sep 30 11:15:31 CDT 2008
Module: wine
Branch: master
Commit: 0b334e04df76e468d2bf99dfb7d672666c7657cd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0b334e04df76e468d2bf99dfb7d672666c7657cd
Author: Rob Shearman <robertshearman at 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";
More information about the wine-cvs
mailing list