msvcmaker: Generate rules for IDL_C_SRCS, IDL_S_SRCS, IDL_P_SRCS and IDL_TLB_SRCS.
This commit is contained in:
parent
4a6b856ff2
commit
9898d437ef
|
@ -271,6 +271,26 @@ MAKEFILE_IN: foreach my $makefile_in_file (@makefile_in_files) {
|
||||||
$idl_h_files = [sort(@{$vars{IDL_H_SRCS}})];
|
$idl_h_files = [sort(@{$vars{IDL_H_SRCS}})];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $idl_c_files = [];
|
||||||
|
if(exists($vars{IDL_C_SRCS})) {
|
||||||
|
$idl_c_files = [sort(@{$vars{IDL_C_SRCS}})];
|
||||||
|
}
|
||||||
|
|
||||||
|
my $idl_s_files = [];
|
||||||
|
if(exists($vars{IDL_S_SRCS})) {
|
||||||
|
$idl_s_files = [sort(@{$vars{IDL_S_SRCS}})];
|
||||||
|
}
|
||||||
|
|
||||||
|
my $idl_p_files = [];
|
||||||
|
if(exists($vars{IDL_P_SRCS})) {
|
||||||
|
$idl_p_files = [sort(@{$vars{IDL_P_SRCS}})];
|
||||||
|
}
|
||||||
|
|
||||||
|
my $idl_tlb_files = [];
|
||||||
|
if(exists($vars{IDL_TLB_SRCS})) {
|
||||||
|
$idl_tlb_files = [sort(@{$vars{IDL_TLB_SRCS}})];
|
||||||
|
}
|
||||||
|
|
||||||
my $extradefs;
|
my $extradefs;
|
||||||
if(exists($vars{EXTRADEFS})) {
|
if(exists($vars{EXTRADEFS})) {
|
||||||
$extradefs = $vars{EXTRADEFS};
|
$extradefs = $vars{EXTRADEFS};
|
||||||
|
@ -321,6 +341,10 @@ MAKEFILE_IN: foreach my $makefile_in_file (@makefile_in_files) {
|
||||||
$modules{$module}{resource_files} = $local_resource_files;
|
$modules{$module}{resource_files} = $local_resource_files;
|
||||||
$modules{$module}{imports} = [];
|
$modules{$module}{imports} = [];
|
||||||
$modules{$module}{idl_h_files} = $local_idl_h_files;
|
$modules{$module}{idl_h_files} = $local_idl_h_files;
|
||||||
|
$modules{$module}{idl_c_files} = [];
|
||||||
|
$modules{$module}{idl_s_files} = [];
|
||||||
|
$modules{$module}{idl_p_files} = [];
|
||||||
|
$modules{$module}{idl_tlb_files} = [];
|
||||||
$modules{$module}{extradefs} = $extradefs if $extradefs;
|
$modules{$module}{extradefs} = $extradefs if $extradefs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -336,6 +360,10 @@ MAKEFILE_IN: foreach my $makefile_in_file (@makefile_in_files) {
|
||||||
$modules{$module}{resource_files} = $resource_files;
|
$modules{$module}{resource_files} = $resource_files;
|
||||||
$modules{$module}{imports} = [@imports];
|
$modules{$module}{imports} = [@imports];
|
||||||
$modules{$module}{idl_h_files} = $idl_h_files;
|
$modules{$module}{idl_h_files} = $idl_h_files;
|
||||||
|
$modules{$module}{idl_c_files} = $idl_c_files;
|
||||||
|
$modules{$module}{idl_s_files} = $idl_s_files;
|
||||||
|
$modules{$module}{idl_p_files} = $idl_p_files;
|
||||||
|
$modules{$module}{idl_tlb_files} = $idl_tlb_files;
|
||||||
$modules{$module}{extradefs} = $extradefs if $extradefs;
|
$modules{$module}{extradefs} = $extradefs if $extradefs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,6 +440,10 @@ foreach my $dsp_file (keys(%wine_test_dsp_files)) {
|
||||||
$modules{$module}{resource_files} = $resource_files;
|
$modules{$module}{resource_files} = $resource_files;
|
||||||
$modules{$module}{imports} = [@imports];
|
$modules{$module}{imports} = [@imports];
|
||||||
$modules{$module}{idl_h_files} = [];
|
$modules{$module}{idl_h_files} = [];
|
||||||
|
$modules{$module}{idl_c_files} = [];
|
||||||
|
$modules{$module}{idl_s_files} = [];
|
||||||
|
$modules{$module}{idl_p_files} = [];
|
||||||
|
$modules{$module}{idl_tlb_files} = [];
|
||||||
|
|
||||||
$modules{$module}{tests} = [@tests];
|
$modules{$module}{tests} = [@tests];
|
||||||
}
|
}
|
||||||
|
@ -440,6 +472,52 @@ foreach my $module (@modules) {
|
||||||
replace_file("$wine_dir/$dsp_file", \&_generate_dsp, $module);
|
replace_file("$wine_dir/$dsp_file", \&_generate_dsp, $module);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub output_dsp_idl_rules($$$) {
|
||||||
|
my $wine_include_dir = shift;
|
||||||
|
my $ext = shift;
|
||||||
|
my @idl_src_files = @{(shift)};
|
||||||
|
|
||||||
|
foreach my $idl_src_file (@idl_src_files) {
|
||||||
|
$idl_src_file =~ s%/%\\%g;
|
||||||
|
if($idl_src_file !~ /^\./) {
|
||||||
|
$idl_src_file = ".\\$idl_src_file";
|
||||||
|
}
|
||||||
|
|
||||||
|
print OUT "# Begin Source File\r\n";
|
||||||
|
print OUT "\r\n";
|
||||||
|
|
||||||
|
print OUT "SOURCE=$idl_src_file\r\n";
|
||||||
|
|
||||||
|
my $basename = $idl_src_file;
|
||||||
|
$basename =~ s/\.idl$//;
|
||||||
|
|
||||||
|
print OUT "# PROP Ignore_Default_Tool 1\r\n";
|
||||||
|
print OUT "# Begin Custom Build\r\n";
|
||||||
|
print OUT "InputPath=$idl_src_file\r\n";
|
||||||
|
print OUT "\r\n";
|
||||||
|
print OUT "BuildCmds= \\\r\n";
|
||||||
|
print OUT "\tmidl /nologo /I $wine_include_dir $idl_src_file ";
|
||||||
|
if ($ext eq ".h") {
|
||||||
|
print OUT "/client none /server none /notlb /h ";
|
||||||
|
} elsif ($ext eq "_c.c") {
|
||||||
|
print OUT "/server none /notlb /cstub ";
|
||||||
|
} elsif ($ext eq "_s.c") {
|
||||||
|
print OUT "/client none /notlb /sstub ";
|
||||||
|
} elsif ($ext eq "_p.c") {
|
||||||
|
print OUT "/client none /server none /notlb /proxy ";
|
||||||
|
} elsif ($ext eq ".tlb") {
|
||||||
|
print OUT "/client none /server none /tlb ";
|
||||||
|
}
|
||||||
|
print OUT "$basename$ext\r\n";
|
||||||
|
print OUT "\r\n";
|
||||||
|
print OUT "\"$basename$ext\" : \$(SOURCE) \"\$(INTDIR)\" \"\$(OUTDIR)\"\r\n";
|
||||||
|
print OUT " \$(BuildCmds)\r\n";
|
||||||
|
print OUT "# End Custom Build\r\n";
|
||||||
|
|
||||||
|
print OUT "# End Source File\r\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub _generate_dsp($$) {
|
sub _generate_dsp($$) {
|
||||||
local *OUT = shift;
|
local *OUT = shift;
|
||||||
|
|
||||||
|
@ -478,6 +556,10 @@ sub _generate_dsp($$) {
|
||||||
my @header_files = @{$modules{$module}{header_files}};
|
my @header_files = @{$modules{$module}{header_files}};
|
||||||
my @resource_files = @{$modules{$module}{resource_files}};
|
my @resource_files = @{$modules{$module}{resource_files}};
|
||||||
my @idl_h_files = @{$modules{$module}{idl_h_files}};
|
my @idl_h_files = @{$modules{$module}{idl_h_files}};
|
||||||
|
my @idl_c_files = @{$modules{$module}{idl_c_files}};
|
||||||
|
my @idl_s_files = @{$modules{$module}{idl_s_files}};
|
||||||
|
my @idl_p_files = @{$modules{$module}{idl_p_files}};
|
||||||
|
my @idl_tlb_files = @{$modules{$module}{idl_tlb_files}};
|
||||||
|
|
||||||
if ($project !~ /^wine(?:build|runtests|test)?$/ &&
|
if ($project !~ /^wine(?:build|runtests|test)?$/ &&
|
||||||
$project !~ /^(?:gdi32)_.+?$/ &&
|
$project !~ /^(?:gdi32)_.+?$/ &&
|
||||||
|
@ -908,32 +990,13 @@ sub _generate_dsp($$) {
|
||||||
print OUT "# End Source File\r\n";
|
print OUT "# End Source File\r\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $idl_h_file (@idl_h_files) {
|
output_dsp_idl_rules $wine_include_dir, ".h", \@idl_h_files;
|
||||||
$idl_h_file =~ s%/%\\%g;
|
output_dsp_idl_rules $wine_include_dir, "_c.c", \@idl_c_files;
|
||||||
if($idl_h_file !~ /^\./) {
|
output_dsp_idl_rules $wine_include_dir, "_s.c", \@idl_s_files;
|
||||||
$idl_h_file = ".\\$idl_h_file";
|
output_dsp_idl_rules $wine_include_dir, "_p.c", \@idl_p_files;
|
||||||
}
|
# Hack - stdole2.idl cannot be compiled with midl
|
||||||
|
if($project ne "include") {
|
||||||
print OUT "# Begin Source File\r\n";
|
output_dsp_idl_rules $wine_include_dir, ".tlb", \@idl_tlb_files;
|
||||||
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 "# End Group\r\n";
|
||||||
|
|
Loading…
Reference in New Issue