summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelliott_c <ocielliottc@users.noreply.github.com>2005-05-16 16:41:30 +0000
committerelliott_c <ocielliottc@users.noreply.github.com>2005-05-16 16:41:30 +0000
commit0ef5e7ad0ee429288fe764a289f1414e9c41a3f8 (patch)
treeca26d7a27add93d0f589cd14e27c15af019f09fe
parent987bae628b60ded8ca0aca53d305392642ee0fa3 (diff)
downloadMPC-0ef5e7ad0ee429288fe764a289f1414e9c41a3f8.tar.gz
ChangeLogTag: Mon May 16 11:36:29 2005 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r--ChangeLog30
-rw-r--r--modules/Driver.pm22
-rw-r--r--modules/ProjectCreator.pm40
-rw-r--r--modules/TemplateParser.pm52
-rw-r--r--modules/VC71WorkspaceCreator.pm28
-rw-r--r--modules/VC7ProjectCreator.pm18
-rw-r--r--modules/VC7WorkspaceCreator.pm60
-rw-r--r--modules/VC8ProjectCreator.pm19
-rw-r--r--modules/VC8WorkspaceCreator.pm37
-rw-r--r--templates/vc7.mpd18
-rw-r--r--templates/vc8.mpd734
-rw-r--r--templates/vc8dll.mpt52
-rw-r--r--templates/vc8exe.mpt56
-rw-r--r--templates/vc8lib.mpt51
-rw-r--r--templates/vc8libexe.mpt53
15 files changed, 1211 insertions, 59 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f63da01..314cca5e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+Mon May 16 11:36:29 2005 Chad Elliott <elliott_c@ociweb.com>
+
+ * modules/Driver.pm:
+
+ Modified the time printout to just print the amount of time taken
+ at the end of each file or project type and then the total time at
+ the end.
+
+ * modules/ProjectCreator.pm:
+
+ Do not attempt to use the language setting if it hasn't been set.
+ This only happens when the -recurse option is used with mpc.pl.
+
+ * modules/TemplateParser.pm:
+ * modules/VC71WorkspaceCreator.pm:
+ * modules/VC7ProjectCreator.pm:
+ * modules/VC7WorkspaceCreator.pm:
+ * modules/VC8ProjectCreator.pm:
+ * modules/VC8WorkspaceCreator.pm:
+ * templates/vc7.mpd:
+ * templates/vc8.mpd:
+ * templates/vc8dll.mpt:
+ * templates/vc8exe.mpt:
+ * templates/vc8lib.mpt:
+ * templates/vc8libexe.mpt:
+
+ Committing Justin Michel's <michel_j@ociweb.com> changes for
+ better support for Visual Studio 8 and streamlining changes for
+ the Visual Studio 7 project files.
+
Mon May 16 06:47:57 2005 Chad Elliott <elliott_c@ociweb.com>
* USAGE:
diff --git a/modules/Driver.pm b/modules/Driver.pm
index d7537fdb..4fd05275 100644
--- a/modules/Driver.pm
+++ b/modules/Driver.pm
@@ -269,6 +269,10 @@ sub run {
## Set up un-buffered output for the progress callback
$| = 1;
+ ## Keep the starting time for the total output
+ my($startTime) = time();
+ my($loopTimes) = 0;
+
## Generate the files
my($status) = 0;
foreach my $cfile (@{$options->{'input'}}) {
@@ -281,6 +285,8 @@ sub run {
}
foreach my $name (@{$options->{'creators'}}) {
+ ++$loopTimes;
+
if (!$loaded{$name}) {
require "$name.pm";
$loaded{$name} = 1;
@@ -331,14 +337,17 @@ sub run {
$diag .= ($partial ne '' ? "$partial/" : '') . $file;
}
$self->diagnostic($diag);
- $self->diagnostic('Start Time: ' . scalar(localtime(time())));
+ my($start) = time();
if (!$creator->generate($file)) {
$self->error("Unable to process: " .
($file eq '' ? 'default input' : $file));
$status++;
last;
}
- $self->diagnostic(' End Time: ' . scalar(localtime(time())));
+ my($total) = time() - $start;
+ $self->diagnostic('Generation Time: ' .
+ (int($total / 60) > 0 ? int($total / 60) . 'm ' : '') .
+ ($total % 60) . 's');
$creator->cd($orig_dir);
}
if ($status) {
@@ -346,6 +355,15 @@ sub run {
}
}
+ ## If we went through the loop more than once, we need to print
+ ## out the total amount of time
+ if ($loopTimes > 1) {
+ my($total) = time() - $startTime;
+ $self->diagnostic(' Total Time: ' .
+ (int($total / 60) > 0 ? int($total / 60) . 'm ' : '') .
+ ($total % 60) . 's');
+ }
+
return $status;
}
diff --git a/modules/ProjectCreator.pm b/modules/ProjectCreator.pm
index e2620bdf..26ea6e29 100644
--- a/modules/ProjectCreator.pm
+++ b/modules/ProjectCreator.pm
@@ -3735,11 +3735,14 @@ sub reset_values {
sub add_default_matching_assignments {
my($self) = shift;
my($lang) = $self->get_language();
- foreach my $key (keys %{$language{$lang}->[0]}) {
- if (!defined $language{$lang}->[2]->{$key}) {
- $language{$lang}->[2]->{$key} = [];
- foreach my $keyword (@default_matching_assignments) {
- push(@{$language{$lang}->[2]->{$key}}, $keyword);
+
+ if (defined $lang) {
+ foreach my $key (keys %{$language{$lang}->[0]}) {
+ if (!defined $language{$lang}->[2]->{$key}) {
+ $language{$lang}->[2]->{$key} = [];
+ foreach my $keyword (@default_matching_assignments) {
+ push(@{$language{$lang}->[2]->{$key}}, $keyword);
+ }
}
}
}
@@ -3749,18 +3752,21 @@ sub add_default_matching_assignments {
sub reset_generating_types {
my($self) = shift;
my($lang) = $self->get_language();
- my(%reset) = ('valid_components' => $language{$lang}->[0],
- 'custom_only_removed' => $language{$lang}->[0],
- 'exclude_components' => $language{$lang}->[1],
- 'matching_assignments' => $language{$lang}->[2],
- 'generated_exts' => {},
- 'valid_names' => \%validNames,
- );
-
- foreach my $r (keys %reset) {
- $self->{$r} = {};
- foreach my $key (keys %{$reset{$r}}) {
- $self->{$r}->{$key} = $reset{$r}->{$key};
+
+ if (defined $lang) {
+ my(%reset) = ('valid_components' => $language{$lang}->[0],
+ 'custom_only_removed' => $language{$lang}->[0],
+ 'exclude_components' => $language{$lang}->[1],
+ 'matching_assignments' => $language{$lang}->[2],
+ 'generated_exts' => {},
+ 'valid_names' => \%validNames,
+ );
+
+ foreach my $r (keys %reset) {
+ $self->{$r} = {};
+ foreach my $key (keys %{$reset{$r}}) {
+ $self->{$r}->{$key} = $reset{$r}->{$key};
+ }
}
}
diff --git a/modules/TemplateParser.pm b/modules/TemplateParser.pm
index f1a105e5..90ebf637 100644
--- a/modules/TemplateParser.pm
+++ b/modules/TemplateParser.pm
@@ -56,6 +56,7 @@ my(%keywords) = ('if' => 0,
'starts_with' => 5,
'ends_with' => 5,
'contains' => 5,
+ 'duplicate_index' => 5,
);
# ************************************************************
@@ -82,6 +83,7 @@ sub new {
$self->{'if_skip'} = 0;
$self->{'eval'} = 0;
$self->{'eval_str'} = '';
+ $self->{'dupfiles'} = {};
$self->{'foreach'} = {};
$self->{'foreach'}->{'count'} = -1;
@@ -1181,6 +1183,56 @@ sub handle_pseudo {
}
+sub get_duplicate_index {
+ my($self) = shift;
+ my($name) = shift;
+ return $self->doif_duplicate_index($self->get_value_with_default($name));
+}
+
+
+sub doif_duplicate_index {
+ my($self) = shift;
+ my($value) = shift;
+
+ if (defined $value) {
+ my($base) = $self->basename($value);
+ my($path) = $self->tp_dirname($value);
+
+ if (!defined $self->{'dupfiles'}->{$base}) {
+ $self->{'dupfiles'}->{$base} = [$path];
+ }
+ else {
+ my($index) = 1;
+ foreach my $file (@{$self->{'dupfiles'}->{$base}}) {
+ if ($file eq $path) {
+ return $index;
+ }
+ ++$index;
+ }
+
+ push(@{$self->{'dupfiles'}->{$base}}, $path);
+ return 1;
+ }
+ }
+
+ return undef;
+}
+
+
+sub handle_duplicate_index {
+ my($self) = shift;
+ my($name) = shift;
+
+ if (!$self->{'if_skip'}) {
+ my($value) = $self->doif_duplicate_index(
+ $self->get_value_with_default($name));
+ if (defined $value) {
+ $self->append_current($value);
+ }
+ }
+}
+
+
sub prepare_parameters {
my($self) = shift;
my($prefix) = shift;
diff --git a/modules/VC71WorkspaceCreator.pm b/modules/VC71WorkspaceCreator.pm
index 961bab8a..c3d28b8f 100644
--- a/modules/VC71WorkspaceCreator.pm
+++ b/modules/VC71WorkspaceCreator.pm
@@ -49,19 +49,27 @@ sub print_inner_project {
my($project_name) = shift;
my($name_to_guid_map) = shift;
- my($crlf) = $self->crlf();
- print $fh "\tProjectSection(ProjectDependencies) = postProject$crlf";
- my($darr) = $self->create_array($deps);
- foreach my $dep (@$darr) {
- ## Avoid cirular dependencies
- if ($project_name ne $dep) {
- my($guid) = $name_to_guid_map->{$dep};
- if (defined $guid) {
- print $fh "\t\t{$guid} = {$guid}$crlf";
+ if ($self->allow_empty_dependencies() || length($deps) > 0) {
+ my($crlf) = $self->crlf();
+ print $fh "\tProjectSection(ProjectDependencies) = postProject$crlf";
+ my($darr) = $self->create_array($deps);
+ foreach my $dep (@$darr) {
+ ## Avoid cirular dependencies
+ if ($project_name ne $dep) {
+ my($guid) = $name_to_guid_map->{$dep};
+ if (defined $guid) {
+ print $fh "\t\t{$guid} = {$guid}$crlf";
+ }
}
}
+ print $fh "\tEndProjectSection$crlf";
}
- print $fh "\tEndProjectSection$crlf";
+}
+
+
+sub allow_empty_dependencies {
+ #my($self) = shift;
+ return 1;
}
diff --git a/modules/VC7ProjectCreator.pm b/modules/VC7ProjectCreator.pm
index 4b7f79f0..bdc90560 100644
--- a/modules/VC7ProjectCreator.pm
+++ b/modules/VC7ProjectCreator.pm
@@ -50,6 +50,12 @@ my(%info) = ('cplusplus' => {'ext' => '.vcproj',
# Subroutine Section
# ************************************************************
+sub get_info_hash {
+ my($self) = shift;
+ my($key) = shift;
+ return $info{$key};
+}
+
sub get_quote_symbol {
#my($self) = shift;
return '&quot;';
@@ -104,37 +110,37 @@ sub fill_value {
sub project_file_extension {
my($self) = shift;
- return $info{$self->get_language()}->{'ext'};
+ return $self->get_info_hash($self->get_language())->{'ext'};
}
sub get_dll_exe_template_input_file {
my($self) = shift;
- return $info{$self->get_language()}->{'dllexe'};
+ return $self->get_info_hash($self->get_language())->{'dllexe'};
}
sub get_lib_exe_template_input_file {
my($self) = shift;
- return $info{$self->get_language()}->{'libexe'};
+ return $self->get_info_hash($self->get_language())->{'libexe'};
}
sub get_dll_template_input_file {
my($self) = shift;
- return $info{$self->get_language()}->{'dll'};
+ return $self->get_info_hash($self->get_language())->{'dll'};
}
sub get_lib_template_input_file {
my($self) = shift;
- return $info{$self->get_language()}->{'lib'};
+ return $self->get_info_hash($self->get_language())->{'lib'};
}
sub get_template {
my($self) = shift;
- return $info{$self->get_language()}->{'template'};
+ return $self->get_info_hash($self->get_language())->{'template'};
}
diff --git a/modules/VC7WorkspaceCreator.pm b/modules/VC7WorkspaceCreator.pm
index 74f05a44..43eb76ea 100644
--- a/modules/VC7WorkspaceCreator.pm
+++ b/modules/VC7WorkspaceCreator.pm
@@ -163,15 +163,16 @@ sub write_comps {
}
}
- ## Project Configurations
- print $fh "Global$crlf" .
- "\tGlobalSection(SolutionConfiguration) = preSolution$crlf";
+ print $fh "Global$crlf",
+ "\tGlobalSection(",
+ $self->get_solution_config_section_name(),
+ ") = preSolution$crlf";
my(%configs) = ();
foreach my $project (@list) {
my($name, $deps, $pguid, @cfgs) = @{$$pjs{$project}};
foreach my $cfg (@cfgs) {
- $cfg =~ s/\|.*//;
+ $cfg = $self->get_short_config_name($cfg);
$configs{$cfg} = 1;
}
}
@@ -182,22 +183,55 @@ sub write_comps {
$self->print_dependencies($fh, $gen, \@list, $pjs);
## Project Configuration Names
- print $fh "\tGlobalSection(ProjectConfiguration) = postSolution$crlf";
+ print $fh "\tGlobalSection(",
+ $self->get_project_config_section_name(),
+ ") = postSolution$crlf";
+
foreach my $project (@list) {
my($name, $deps, $pguid, @cfgs) = @{$$pjs{$project}};
foreach my $cfg (sort @cfgs) {
- my($c) = $cfg;
- $c =~ s/\|.*//;
+ my($c) = $self->get_short_config_name($cfg);
print $fh "\t\t{$pguid}.$c.ActiveCfg = $cfg$crlf" .
"\t\t{$pguid}.$c.Build.0 = $cfg$crlf";
}
}
- print $fh "\tEndGlobalSection$crlf" .
- "\tGlobalSection(ExtensibilityGlobals) = postSolution$crlf" .
- "\tEndGlobalSection$crlf" .
- "\tGlobalSection(ExtensibilityAddIns) = postSolution$crlf" .
- "\tEndGlobalSection$crlf" .
- "EndGlobal$crlf";
+ print $fh "\tEndGlobalSection$crlf";
+
+ $self->print_additional_sections($fh);
+
+ print $fh "EndGlobal$crlf";
+}
+
+
+sub get_short_config_name {
+ my($self) = shift;
+ my($cfg) = shift;
+ $cfg =~ s/\|.*//;
+ return $cfg;
+}
+
+
+sub get_solution_config_section_name {
+ #my($self) = shift;
+ return 'SolutionConfiguration';
+}
+
+
+sub get_project_config_section_name {
+ #my($self) = shift;
+ return 'ProjectConfiguration';
+}
+
+
+sub print_additional_sections {
+ my($self) = shift;
+ my($fh) = shift;
+ my($crlf) = $self->crlf();
+
+ print $fh "\tGlobalSection(ExtensibilityGlobals) = postSolution$crlf",
+ "\tEndGlobalSection$crlf",
+ "\tGlobalSection(ExtensibilityAddIns) = postSolution$crlf",
+ "\tEndGlobalSection$crlf";
}
diff --git a/modules/VC8ProjectCreator.pm b/modules/VC8ProjectCreator.pm
index c5a2db7b..4d2d636b 100644
--- a/modules/VC8ProjectCreator.pm
+++ b/modules/VC8ProjectCreator.pm
@@ -17,6 +17,15 @@ use VC7ProjectCreator;
use vars qw(@ISA);
@ISA = qw(VC7ProjectCreator);
+my(%info) = ('cplusplus' => {'ext' => '.vcproj',
+ 'dllexe' => 'vc8exe',
+ 'libexe' => 'vc8libexe',
+ 'dll' => 'vc8dll',
+ 'lib' => 'vc8lib',
+ 'template' => 'vc8',
+ },
+ );
+
# ************************************************************
# Subroutine Section
# ************************************************************
@@ -29,4 +38,14 @@ sub get_configurable {
return $config{$name};
}
+sub get_info_hash {
+ my($self) = shift;
+ my($key) = shift;
+
+ if (defined $info{$key}) {
+ return $info{$key};
+ }
+ return $self->SUPER::get_info_hash($key);
+}
+
1;
diff --git a/modules/VC8WorkspaceCreator.pm b/modules/VC8WorkspaceCreator.pm
index 29dc9286..2d826543 100644
--- a/modules/VC8WorkspaceCreator.pm
+++ b/modules/VC8WorkspaceCreator.pm
@@ -28,8 +28,9 @@ sub pre_workspace {
my($fh) = shift;
my($crlf) = $self->crlf();
- print $fh 'Microsoft Visual Studio Solution File, Format Version 9.00', $crlf,
- '#', $crlf,
+ print $fh $crlf,
+ 'Microsoft Visual Studio Solution File, Format Version 9.00', $crlf,
+ '# Visual Studio 2005', $crlf,
'# $Id$', $crlf,
'#', $crlf,
'# This file was generated by MPC. Any changes made directly to', $crlf,
@@ -39,5 +40,37 @@ sub pre_workspace {
"# $0 @ARGV", $crlf;
}
+sub get_short_config_name {
+ my($self) = shift;
+ my($cfg) = shift;
+ return $cfg;
+}
+
+sub get_solution_config_section_name {
+ #my($self) = shift;
+ return 'SolutionConfigurationPlatforms';
+}
+
+sub get_project_config_section_name {
+ #my($self) = shift;
+ return 'ProjectConfigurationPlatforms';
+}
+
+sub print_additional_sections {
+ my($self) = shift;
+ my($fh) = shift;
+ my($crlf) = $self->crlf();
+
+ print $fh "\tGlobalSection(SolutionProperties) = preSolution$crlf",
+ "\t\tHideSolutionNode = FALSE$crlf",
+ "\tEndGlobalSection$crlf";
+}
+
+sub allow_empty_dependencies {
+ #my($self) = shift;
+ return 0;
+}
+
+
1;
diff --git a/templates/vc7.mpd b/templates/vc7.mpd
index 191e93f7..fb8d22ba 100644
--- a/templates/vc7.mpd
+++ b/templates/vc7.mpd
@@ -167,13 +167,13 @@
<%foreach(grouped_source_file->files)%>
<File
RelativePath="<%grouped_source_file->file%>">
-<%if(dirname(grouped_source_file->file))%>
+<%if(duplicate_index(grouped_source_file->file))%>
<%foreach(configurations)%>
<FileConfiguration
Name="<%configuration%>|<%platform%>">
<Tool
Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\<%noextension(grouped_source_file->file)%>.obj"/>
+ ObjectFile="$(IntDir)\$(InputName)<%duplicate_index(grouped_source_file->file)%>.obj"/>
</FileConfiguration>
<%endfor%>
<%endif%>
@@ -185,14 +185,14 @@
<%foreach(source_files)%>
<File
RelativePath="<%source_file%>">
-<%if(dirname(source_file))%>
+<%if(duplicate_index(source_file))%>
<%foreach(configurations)%>
- <FileConfiguration
- Name="<%configuration%>|<%platform%>">
- <Tool
- Name="VCCLCompilerTool"
- ObjectFile="$(IntDir)\<%noextension(source_file)%>.obj"/>
- </FileConfiguration>
+ <FileConfiguration
+ Name="<%configuration%>|<%platform%>">
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)<%duplicate_index(source_file)%>.obj"/>
+ </FileConfiguration>
<%endfor%>
<%endif%>
</File>
diff --git a/templates/vc8.mpd b/templates/vc8.mpd
new file mode 100644
index 00000000..77f774d9
--- /dev/null
+++ b/templates/vc8.mpd
@@ -0,0 +1,734 @@
+<?xml version="<%xml_version("1.0")%>" encoding="<%encoding("Windows-1252")%>"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="<%vcversion%>"
+ Name="<%project_name%>"
+ ProjectGUID="{<%guid%>}"
+ RootNamespace="<%project_name%>"
+ Keyword="<%if(UseOfMFC)%>MFCProj<%else%><%platform("Win32")%>Proj<%endif%>"
+ SignManifests="true"
+ >
+ <Platforms>
+ <Platform
+ Name="<%platform("Win32")%>"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+<%foreach(configurations)%>
+ <Configuration
+ Name="<%configuration%>|<%platform%>"
+ OutputDirectory="<%if(type_is_dynamic)%><%if(dllout)%><%dllout%><%else%><%libout%><%endif%><%else%><%if(type_is_static)%><%libout%><%else%><%if(install)%><%install%><%else%><%output_dir%><%endif%><%endif%><%endif%>"
+ IntermediateDirectory="<%intermediate_dir%>\<%noextension(project_file)%>"
+ ConfigurationType="<%ConfigurationType%>"
+<%if(UseOfMFC)%>
+ UseOfMFC="<%UseOfMFC%>"
+<%endif%>
+ CharacterSet="<%charset("1")%>"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+<%if(compile_options)%>
+ AdditionalOptions="<%compile_options%>"
+<%endif%>
+ Optimization="<%optimize("0")%>"
+<%if(InlineFunctionExpansion)%>
+ InlineFunctionExpansion="<%InlineFunctionExpansion%>"
+<%endif%>
+<%if(EnableIntrinsicFunctions)%>
+ EnableIntrinsicFunctions="<%EnableIntrinsicFunctions%>"
+<%endif%>
+<%if(FavorSizeOrSpeed)%>
+ FavorSizeOrSpeed="<%FavorSizeOrSpeed%>"
+<%endif%>
+<%if(OmitFramePointers)%>
+ OmitFramePointers="<%OmitFramePointers%>"
+<%endif%>
+<%if(EnableFiberSafeOptimizations)%>
+ EnableFiberSafeOptimizations="<%EnableFiberSafeOptimizations%>"
+<%endif%>
+<%if(WholeProgramOptimization)%>
+ WholeProgramOptimization="<%WholeProgramOptimization%>"
+<%endif%>
+<%if(includes)%>
+ AdditionalIncludeDirectories="<%foreach(includes)%><%include%><%fornotlast(",")%><%endfor%>"
+<%endif%>
+<%if(AdditionalUsingDirectories)%>
+ AdditionalUsingDirectories="<%AdditionalUsingDirectories%>"
+<%endif%>
+ PreprocessorDefinitions="<%if(unicode)%>UNICODE;_UNICODE;<%endif%><%if(type_is_dynamic)%><%foreach(dynamicflags)%><%dynamicflag%>;<%endfor%><%endif%><%if(need_staticflags)%><%foreach(staticflags)%><%staticflag%>;<%endfor%><%endif%><%if(pch_header)%><%foreach(pch_defines)%><%pch_define%>;<%endfor%><%endif%><%foreach(defines common_defines macros)%><%define%><%fornotlast(";")%><%endfor%>"
+<%if(IgnoreStandardIncludePath)%>
+ IgnoreStandardIncludePath="<%IgnoreStandardIncludePath%>"
+<%endif%>
+<%if(GeneratePreprocessedFile)%>
+ GeneratePreprocessedFile="<%GeneratePreprocessedFile%>"
+<%endif%>
+<%if(KeepComments)%>
+ KeepComments="<%KeepComments%>"
+<%endif%>
+<%if(StringPooling)%>
+ StringPooling="<%StringPooling%>"
+<%endif%>
+<%if(!Optimization)%>
+ MinimalRebuild="<%MinimalRebuild("true")%>"
+<%endif%>
+<%if(ExceptionHandling)%>
+ ExceptionHandling="<%ExceptionHandling("2")%>"
+<%endif%>
+<%if(!Optimization)%>
+ BasicRuntimeChecks="<%BasicRuntimeChecks("3")%>"
+<%endif%>
+<%if(SmallerTypeCheck)%>
+ SmallerTypeCheck="<%SmallerTypeCheck%>"
+<%endif%>
+ RuntimeLibrary="<%RuntimeLibrary("3")%>"
+<%if(StructMemberAlignment)%>
+ StructMemberAlignment="<%StructMemberAlignment%>"
+<%endif%>
+<%if(BufferSecurityCheck)%>
+ BufferSecurityCheck="<%BufferSecurityCheck%>"
+<%endif%>
+<%if(EnableFunctionLevelLinking)%>
+ EnableFunctionLevelLinking="<%EnableFunctionLevelLinking%>"
+<%endif%>
+<%if(EnableEnhancedInstructionSet)%>
+ EnableEnhancedInstructionSet="<%EnableEnhancedInstructionSet%>"
+<%endif%>
+<%if(FloatingPointModel)%>
+ FloatingPointModel="<%FloatingPointModel%>"
+<%endif%>
+<%if(FloatingPointExceptions)%>
+ FloatingPointExceptions="<%FloatingPointExceptions%>"
+<%endif%>
+<%if(DisableLanguageExtensions)%>
+ DisableLanguageExtensions="<%DisableLanguageExtensions%>"
+<%endif%>
+<%if(DefaultCharIsUnsigned)%>
+ DefaultCharIsUnsigned="<%DefaultCharIsUnsigned%>"
+<%endif%>
+<%if(TreatWChar_tAsBuiltInType)%>
+ TreatWChar_tAsBuiltInType="<%TreatWChar_tAsBuiltInType%>"
+<%endif%>
+<%if(ForceConformanceInForLoopScope)%>
+ ForceConformanceInForLoopScope="<%ForceConformanceInForLoopScope%>"
+<%endif%>
+ RuntimeTypeInfo="<%RuntimeTypeInfo("true")%>"
+<%if(OpenMP)%>
+ OpenMP="<%OpenMP%>"
+<%endif%>
+<%if(pch_header)%>
+<%if(pch_source)%>
+ UsePrecompiledHeader="2"
+<%else%>
+ UsePrecompiledHeader="2"
+<%endif%>
+ PrecompiledHeaderThrough="<%pch_header%>"
+<%if(PrecompiledHeaderFile)%>
+ PrecompiledHeaderFile="<%PrecompiledHeaderFile%>"
+<%endif%>
+<%if(ExpandAttributedSource)%>
+ ExpandAttributedSource="<%ExpandAttributedSource%>"
+<%endif%>
+<%if(AssemblerOutput)%>
+ AssemblerOutput="<%AssemblerOutput%>"
+<%endif%>
+<%if(AssemblerListingLocation)%>
+ AssemblerListingLocation="<%AssemblerListingLocation%>"
+<%endif%>
+<%if(ObjectFile)%>
+ ObjectFile="<%ObjectFile%>"
+<%endif%>
+<%if(pdbc)%>
+ ProgramDataBaseFileName="<%if(type_is_static)%><%libout%>\<%staticname%><%if(use_lib_modifier)%><%lib_modifier%><%endif%>.pdb<%else%><%intermediate_dir%>\<%noextension(project_file)%>/<%endif%>"
+<%else%>
+<%if(ProgramDataBaseFileName)%>
+ ProgramDataBaseFileName="<%ProgramDataBaseFileName%>"
+<%endif%>
+<%endif%>
+<%if(GenerateXMLDocumentationFiles)%>
+ GenerateXMLDocumentationFiles="<%GenerateXMLDocumentationFiles%>"
+<%endif%>
+<%if(XMLDocumentationFileName)%>
+ XMLDocumentationFileName="<%XMLDocumentationFileName%>"
+<%endif%>
+<%if(BrowseInformation)%>
+ BrowseInformation="<%BrowseInformation%>"
+<%endif%>
+<%if(BrowseInformationFile)%>
+ BrowseInformationFile="<%BrowseInformationFile%>"
+<%endif%>
+<%endif%>
+ WarningLevel="<%warning_level("3")%>"
+<%if(WarnAsError)%>
+ WarnAsError="<%WarnAsError%>"
+<%endif%>
+ Detect64BitPortabilityProblems="<%Detect64BitPortabilityProblems("true")%>"
+<%if(!Optimization)%>
+ DebugInformationFormat="<%debug_format("3")%>"/>
+<%endif%>
+<%if(CallingConvention)%>
+ CallingConvention="<%CallingConvention%>"
+<%endif%>
+<%if(CompileAs)%>
+ CompileAs="<%CompileAs%>"
+<%endif%>
+<%if(DisableSpecificWarnings)%>
+ DisableSpecificWarnings="<%DisableSpecificWarnings%>"
+<%endif%>
+<%if(ForcedIncludeFiles)%>
+ ForcedIncludeFiles="<%ForcedIncludeFiles%>"
+<%endif%>
+<%if(ForcedUsingFiles)%>
+ ForcedUsingFiles="<%ForcedUsingFiles%>"
+<%endif%>
+<%if(ShowIncludes)%>
+ ShowIncludes="<%ShowIncludes%>"
+<%endif%>
+<%if(UndefinePreprocessorDefinitions)%>
+ UndefinePreprocessorDefinitions="<%UndefinePreprocessorDefinitions%>"
+<%endif%>
+<%if(UndefineAllPreprocessorDefinitions)%>
+ UndefineAllPreprocessorDefinitions="<%UndefineAllPreprocessorDefinitions%>"
+<%endif%>
+<%if(EnablePREfast)%>
+ EnablePREfast="<%EnablePREfast%>"
+<%endif%>
+<%if(UseFullPaths)%>
+ UseFullPaths="<%UseFullPaths%>"
+<%endif%>
+<%if(OmitDefaultLibName)%>
+ OmitDefaultLibName="<%OmitDefaultLibName%>"
+<%endif%>
+<%if(ErrorReporting)%>
+ ErrorReporting="<%ErrorReporting%>"
+<%endif%>
+<%if(SuppressStartupBanner)%>
+ SuppressStartupBanner="<%SuppressStartupBanner%>"
+<%endif%>
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="<%foreach(defines macros)%><%define%><%fornotlast(";")%><%endfor%>"
+ Culture="<%culture("1033")%>"
+ AdditionalIncludeDirectories="<%foreach(includes)%><%include%><%fornotlast(",")%><%endfor%>"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+<%if(type_is_static)%>
+ Name="VCLibrarianTool"
+<%if(staticname)%>
+ OutputFile="<%libout%>\<%staticname%><%if(use_lib_modifier)%><%lib_modifier%><%endif%><%lib_ext%>"
+<%endif%>
+<%else%>
+ Name="VCLinkerTool"
+<%if(RegisterOutput)%>
+ RegisterOutput="<%RegisterOutput%>"
+<%endif%>
+<%if(IgnoreImportLibrary)%>
+ IgnoreImportLibrary="<%IgnoreImportLibrary%>"
+<%endif%>
+<%if(LinkLibraryDependencies)%>
+ LinkLibraryDependencies="<%LinkLibraryDependencies%>"
+<%endif%>
+<%if(UseLibraryDependencyInputs)%>
+ UseLibraryDependencyInputs="<%UseLibraryDependencyInputs%>"
+<%endif%>
+<%if(UseUnicodeResponseFiles)%>
+ UseUnicodeResponseFiles="<%UseUnicodeResponseFiles%>"
+<%endif%>
+<%if(!source_files)%>
+ AdditionalOptions="/noentry<%if(link_options)%> <%link_options%><%endif%>"
+<%else%>
+<%if(link_options)%>
+ AdditionalOptions="<%link_options%>"
+<%endif%>
+<%endif%>
+<%if(type_is_binary)%>
+ AdditionalDependencies="<%foreach(libs)%><%fornotfirst(" ")%><%lib%><%lib_modifier%><%lib_ext%><%endfor%><%foreach(lit_libs)%> <%lit_lib%>.lib<%endfor%><%foreach(pure_libs)%> <%pure_lib%><%endfor%>"
+<%endif%>
+<%if()%>
+ ="<%%>"
+<%endif%>
+<%if(exename || sharedname || staticname)%>
+ OutputFile="$(OutDir)\<%if(type_is_dynamic)%><%sharedname%><%if(use_lib_modifier)%><%lib_modifier%><%endif%><%dll_ext%><%else%><%exename%><%if(use_exe_modifier)%><%lib_modifier%><%endif%><%exe_ext%><%endif%>"
+<%endif%>
+<%if(win_version)%>
+ Version="<%win_version%>"
+<%endif%>
+ LinkIncremental="<%LinkIncremental("2")%>"
+ SuppressStartupBanner="<%SuppressStartupBanner("true")%>"
+ AdditionalLibraryDirectories="<%foreach(libpaths)%><%libpath%><%fornotlast(";")%><%endfor%>"
+<%if(ShowProgress)%>
+ ShowProgress="<%ShowProgress%>"
+<%endif%>
+<%if(OutputFile)%>
+ OutputFile="<%OutputFile%>"
+<%endif%>
+<%if(Version)%>
+ Version="<%Version%>"
+<%endif%>
+<%if(LinkIncremental)%>
+ LinkIncremental="<%LinkIncremental%>"
+<%endif%>
+<%if(ignore_default_library_names)%>
+ IgnoreDefaultLibraryNames="<%foreach(ignore_default_library_names)%><%ignore_default_library_name%><%fornotlast(";")%><%endfor%>"
+<%endif%>
+<%if(SuppressStartupBanner)%>
+ SuppressStartupBanner="<%SuppressStartupBanner%>"
+<%endif%>
+<%if(AdditionalLibraryDirectories)%>
+ AdditionalLibraryDirectories="<%AdditionalLibraryDirectories%>"
+<%endif%>
+<%if(GenerateManifest)%>
+ GenerateManifest="<%GenerateManifest%>"
+<%endif%>
+<%if(ManifestFile)%>
+ ManifestFile="<%ManifestFile%>"
+<%endif%>
+<%if(AdditionalManifestDependencies)%>
+ AdditionalManifestDependencies="<%AdditionalManifestDependencies%>"
+<%endif%>
+<%if(IgnoreAllDefaultLibraries)%>
+ IgnoreAllDefaultLibraries="<%IgnoreAllDefaultLibraries%>"
+<%endif%>
+<%if(IgnoreDefaultLibraryNames)%>
+ IgnoreDefaultLibraryNames="<%IgnoreDefaultLibraryNames%>"
+<%endif%>
+<%if(ModuleDefinitionFile)%>
+ ModuleDefinitionFile="<%ModuleDefinitionFile%>"
+<%endif%>
+<%if(AddModuleNamesToAssembly)%>
+ AddModuleNamesToAssembly="<%AddModuleNamesToAssembly%>"
+<%endif%>
+<%if(EmbedManagedResourceFile)%>
+ EmbedManagedResourceFile="<%EmbedManagedResourceFile%>"
+<%endif%>
+<%if(ForceSymbolReferences)%>
+ ForceSymbolReferences="<%ForceSymbolReferences%>"
+<%endif%>
+<%if(DelayLoadDLLs)%>
+ DelayLoadDLLs="<%DelayLoadDLLs%>"
+<%endif%>
+<%if(AssemblyLinkResource)%>
+ AssemblyLinkResource="<%AssemblyLinkResource%>"
+<%endif%>
+ GenerateDebugInformation="<%GenerateDebugInformation("true")%>"
+<%if(AssemblyDebug)%>
+ AssemblyDebug="<%AssemblyDebug%>"
+<%endif%>
+<%if(pdbl)%>
+<%if(sharedname)%>
+ ProgramDatabaseFile="$(OutDir)\<%sharedname%><%if(use_lib_modifier)%><%lib_modifier%><%endif%>.pdb"
+<%else%>
+<%if(exename)%>
+ ProgramDatabaseFile="$(OutDir)\<%exename%><%if(use_exe_modifier)%><%lib_modifier%><%endif%>.pdb"
+<%endif%>
+<%endif%>
+<%endif%>
+<%if(StripPrivateSymbols)%>
+ StripPrivateSymbols="<%StripPrivateSymbols%>"
+<%endif%>
+<%if(GenerateMapFile)%>
+ GenerateMapFile="<%GenerateMapFile%>"
+<%endif%>
+<%if(MapFileName)%>
+ MapFileName="<%MapFileName%>"
+<%endif%>
+<%if(MapExports)%>
+ MapExports="<%MapExports%>"
+<%endif%>
+ SubSystem="<%subsystem("2")%>"
+<%if(HeapReserveSize)%>
+ HeapReserveSize="<%HeapReserveSize%>"
+<%endif%>
+<%if(HeapCommitSize)%>
+ HeapCommitSize="<%HeapCommitSize%>"
+<%endif%>
+<%if(StackReserveSize)%>
+ StackReserveSize="<%StackReserveSize%>"
+<%endif%>
+<%if(StackCommitSize)%>
+ StackCommitSize="<%StackCommitSize%>"
+<%endif%>
+<%if(LargeAddressAware)%>
+ LargeAddressAware="<%LargeAddressAware%>"
+<%endif%>
+<%if(TerminalServerAware)%>
+ TerminalServerAware="<%TerminalServerAware%>"
+<%endif%>
+<%if(SwapRunFromCD)%>
+ SwapRunFromCD="<%SwapRunFromCD%>"
+<%endif%>
+<%if(SwapRunFromNet)%>
+ SwapRunFromNet="<%SwapRunFromNet%>"
+<%endif%>
+<%if(Driver)%>
+ Driver="<%Driver%>"
+<%endif%>
+<%if(Optimization)%>
+ OptimizeReferences="<%OptimizeReferences("2")%>"
+ EnableCOMDATFolding="<%EnableCOMDATFolding("2")%>"
+<%endif%>
+<%if(OptimizeForWindows98)%>
+ OptimizeForWindows98="<%OptimizeForWindows98%>"
+<%endif%>
+<%if(FunctionOrder)%>
+ FunctionOrder="<%FunctionOrder%>"
+<%endif%>
+<%if(LinkTimeCodeGeneration)%>
+ LinkTimeCodeGeneration="<%LinkTimeCodeGeneration%>"
+<%endif%>
+<%if(ProfileGuidedDatabase)%>
+ ProfileGuidedDatabase="<%ProfileGuidedDatabase%>"
+<%endif%>
+<%if(unicode && unicode_mfc_entry && exename && source_files)%>
+ EntryPointSymbol="<%unicode_mfc_entry%>"
+<%else%>
+<%if(EntryPointSymbol)%>
+ EntryPointSymbol="<%EntryPointSymbol%>"
+<%endif%>
+<%endif%>
+<%if(ResourceOnlyDLL)%>
+ ResourceOnlyDLL="<%ResourceOnlyDLL%>"
+<%endif%>
+<%if(SetChecksum)%>
+ SetChecksum="<%SetChecksum%>"
+<%endif%>
+<%if(BaseAddress)%>
+ BaseAddress="<%BaseAddress%>"
+<%endif%>
+<%if(TurnOffAssemblyGeneration)%>
+ TurnOffAssemblyGeneration="<%TurnOffAssemblyGeneration%>"
+<%endif%>
+<%if(type_is_dynamic && sharedname)%>
+ ImportLibrary="<%libout%>\<%sharedname%><%if(use_lib_modifier)%><%lib_modifier%><%endif%><%lib_ext%>"
+<%endif%>
+<%if(SupportUnloadOfDelayLoadedDLL)%>
+ SupportUnloadOfDelayLoadedDLL="<%SupportUnloadOfDelayLoadedDLL%>"
+<%endif%>
+<%if(ImportLibrary)%>
+ ImportLibrary="<%ImportLibrary%>"
+<%endif%>
+<%if(MergeSections)%>
+ MergeSections="<%MergeSections%>"
+<%endif%>
+ TargetMachine="<%TargetMachine("1")%>"
+<%if(FixedBaseAddress)%>
+ FixedBaseAddress="<%FixedBaseAddress%>"
+<%endif%>
+<%if(KeyFile)%>
+ KeyFile="<%KeyFile%>"
+<%endif%>
+<%if(KeyContainer)%>
+ KeyContainer="<%KeyContainer%>"
+<%endif%>
+<%if(DelaySign)%>
+ DelaySign="<%DelaySign%>"
+<%endif%>
+<%if(AllowIsolation)%>
+ AllowIsolation="<%AllowIsolation%>"
+<%endif%>
+<%if(Profile)%>
+ Profile="<%Profile%>"
+<%endif%>
+<%if(CLRThreadAttribute)%>
+ CLRThreadAttribute="<%CLRThreadAttribute%>"
+<%endif%>
+<%if(CLRImageType)%>
+ CLRImageType="<%CLRImageType%>"
+<%endif%>
+<%if(ErrorReporting)%>
+ ErrorReporting="<%ErrorReporting%>"
+<%endif%>
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+<%if(postbuild)%>
+ CommandLine="<%eval(postbuild)%>"
+<%endif%>
+ />
+ </Configuration>
+<%endfor%>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+<%if(exename || sharedname || staticname)%>
+<%if(source_files)%>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;cxx;cc;C;c">
+<%if(pch_source)%>
+ <File
+ RelativePath="<%pch_source%>">
+<%foreach(configurations)%>
+ <FileConfiguration
+ Name="<%configuration%>|<%platform%>">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+<%endfor%>
+ </File>
+<%endif%>
+<%if(grouped_source_files)%>
+<%foreach(grouped_source_files)%>
+ <Filter
+ Name="<%grouped_source_file%>"
+ Filter="">
+<%foreach(grouped_source_file->files)%>
+ <File
+ RelativePath="<%grouped_source_file->file%>">
+<%if(duplicate_index(grouped_source_file->file))%>
+<%foreach(configurations)%>
+ <FileConfiguration
+ Name="<%configuration%>|<%platform%>">
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)<%duplicate_index(grouped_source_file->file)%>.obj"/>
+ </FileConfiguration>
+<%endfor%>
+<%endif%>
+ </File>
+<%endfor%>
+ </Filter>
+<%endfor%>
+<%else%>
+<%foreach(source_files)%>
+ <File
+ RelativePath="<%source_file%>">
+<%if(duplicate_index(source_file))%>
+<%foreach(configurations)%>
+ <FileConfiguration
+ Name="<%configuration%>|<%platform%>">
+ <Tool
+ Name="VCCLCompilerTool"
+ ObjectFile="$(IntDir)\$(InputName)<%duplicate_index(source_file)%>.obj"/>
+ </FileConfiguration>
+<%endfor%>
+<%endif%>
+ </File>
+<%endfor%>
+<%endif%>
+ </Filter>
+<%endif%>
+<%endif%>
+<%if(header_files)%>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hh">
+<%if(pch_header)%>
+ <File
+ RelativePath="<%pch_header%>">
+ </File>
+<%endif%>
+<%if(grouped_header_files)%>
+<%foreach(grouped_header_files)%>
+ <Filter
+ Name="<%grouped_header_file%>"
+ Filter="">
+<%foreach(grouped_header_file->files)%>
+ <File
+ RelativePath="<%grouped_header_file->file%>">
+ </File>
+<%endfor%>
+ </Filter>
+<%endfor%>
+<%else%>
+<%foreach(header_files)%>
+ <File
+ RelativePath="<%header_file%>">
+ </File>
+<%endfor%>
+<%endif%>
+ </Filter>
+<%endif%>
+<%foreach(custom_types)%>
+<%if(custom_type->input_files)%>
+ <Filter
+ Name="<%ucw(custom_type)%>"
+ Filter="<%foreach(custom_type->inputexts)%><%custom_type->inputext%><%fornotlast(";")%><%endfor%>">
+<%foreach(custom_type->input_files)%>
+ <File
+ RelativePath="<%custom_type->input_file%>">
+<%foreach(configurations)%>
+ <FileConfiguration
+ Name="<%configuration%>|<%platform%>"
+<%if(!custom_type->input_file->output_files)%>
+ ExcludedFromBuild="true"
+<%endif%>
+ >
+<%if(custom_type->input_file->output_files)%>
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Invoking <%if(flag_overrides(custom_type->input_file, command))%><%flag_overrides(custom_type->input_file, command)%><%else%><%custom_type->command%><%endif%> on <%custom_type->input_file%>"
+ CommandLine="<%if(custom_type->libpath)%>PATH=%PATH%;<%custom_type->libpath%>&#x0D;&#x0A;<%endif%><%if(flag_overrides(custom_type->input_file, gendir))%>if not exist <%flag_overrides(custom_type->input_file, gendir)%> mkdir <%flag_overrides(custom_type->input_file, gendir)%>&#x0D;&#x0A;<%endif%><%if(flag_overrides(custom_type->input_file, command))%><%flag_overrides(custom_type->input_file, command)%><%else%><%custom_type->command%><%endif%> <%if(flag_overrides(custom_type->input_file, commandflags))%><%flag_overrides(custom_type->input_file, commandflags)%><%else%><%custom_type->commandflags%><%endif%> &quot;<%custom_type->input_file%>&quot;<%if(custom_type->output_option)%> <%custom_type->output_option%> &quot;<%if(flag_overrides(custom_type->input_file, gendir))%><%flag_overrides(custom_type->input_file, gendir)%>\<%basename(custom_type->input_file->output_files)%><%else%><%custom_type->input_file->output_files%><%endif%>&quot;<%endif%><%if(flag_overrides(custom_type->input_file, postcommand))%><%foreach(custom_type->input_file->output_files)%>&#x0D;&#x0A;<%flag_overrides(custom_type->input_file, postcommand)%><%endfor%><%else%><%if(custom_type->postcommand)%><%foreach(custom_type->input_file->output_files)%>&#x0D;&#x0A;<%custom_type->postcommand%><%endfor%><%endif%><%endif%><%if(pch_header)%><%if(custom_type->pch_postrule)%><%foreach(custom_type->input_file->source_output_files)%>&#x0D;&#x0A;echo #include &quot;<%pch_header%>&quot; &gt; temporary.src&#x0D;&#x0A;type &quot;<%if(flag_overrides(custom_type->input_file, gendir))%><%flag_overrides(custom_type->input_file, gendir)%>\<%basename(custom_type->input_file->source_output_file)%><%else%><%custom_type->input_file->source_output_file%><%endif%>&quot; &gt;&gt; temporary.src&#x0D;&#x0A;move /y temporary.src &quot;<%if(flag_overrides(custom_type->input_file, gendir))%><%flag_overrides(custom_type->input_file, gendir)%>\<%basename(custom_type->input_file->source_output_file)%><%else%><%custom_type->input_file->source_output_file%><%endif%>&quot;<%endfor%><%endif%><%endif%>"
+<%if(flag_overrides(custom_type->input_file, dependent))%>
+ AdditionalDependencies="<%flag_overrides(custom_type->input_file, dependent)%>.exe"
+<%else%>
+<%if(custom_type->dependent)%>
+ AdditionalDependencies="<%custom_type->dependent%>.exe"
+<%endif%>
+<%endif%>
+ Outputs="<%foreach(custom_type->input_file->output_files)%><%if(flag_overrides(custom_type->input_file, gendir))%><%flag_overrides(custom_type->input_file, gendir)%>\<%basename(custom_type->input_file->output_file)%><%else%><%custom_type->input_file->output_file%><%endif%><%fornotlast(";")%><%endfor%>"/>
+<%endif%>
+ </FileConfiguration>
+<%endfor%>
+ </File>
+<%endfor%>
+ </Filter>
+<%endif%>
+<%endfor%>
+<%if(inline_files)%>
+ <Filter
+ Name="Inline Files"
+ Filter="i;inl">
+<%if(grouped_inline_files)%>
+<%foreach(grouped_inline_files)%>
+ <Filter
+ Name="<%grouped_inline_file%>"
+ Filter="">
+<%foreach(grouped_inline_file->files)%>
+ <File
+ RelativePath="<%grouped_inline_file->file%>">
+ </File>
+<%endfor%>
+ </Filter>
+<%endfor%>
+<%else%>
+<%foreach(inline_files)%>
+ <File
+ RelativePath="<%inline_file%>">
+ </File>
+<%endfor%>
+<%endif%>
+ </Filter>
+<%endif%>
+<%if(template_files)%>
+ <Filter
+ Name="Template Files"
+ Filter="">
+<%if(grouped_template_files)%>
+<%foreach(grouped_template_files)%>
+ <Filter
+ Name="<%grouped_template_file%>"
+ Filter="">
+<%foreach(grouped_template_file->files)%>
+ <File
+ RelativePath="<%grouped_template_file->file%>">
+<%foreach(configurations)%>
+ <FileConfiguration
+ Name="<%configuration%>|<%platform%>"
+ ExcludedFromBuild="true">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ </FileConfiguration>
+<%endfor%>
+ </File>
+<%endfor%>
+ </Filter>
+<%endfor%>
+<%else%>
+<%foreach(template_files)%>
+ <File
+ RelativePath="<%template_file%>">
+<%foreach(configurations)%>
+ <FileConfiguration
+ Name="<%configuration%>|<%platform%>"
+ ExcludedFromBuild="true">
+ <Tool
+ Name="VCCLCompilerTool"/>
+ </FileConfiguration>
+<%endfor%>
+ </File>
+<%endfor%>
+<%endif%>
+ </Filter>
+<%endif%>
+<%if(documentation_files)%>
+ <Filter
+ Name="Documentation"
+ Filter="">
+<%if(grouped_documentation_files)%>
+<%foreach(grouped_documentation_files)%>
+ <Filter
+ Name="<%grouped_documentation_file%>"
+ Filter="">
+<%foreach(grouped_documentation_file->files)%>
+ <File
+ RelativePath="<%grouped_documentation_file->file%>">
+ </File>
+<%endfor%>
+ </Filter>
+<%endfor%>
+<%else%>
+<%foreach(documentation_files)%>
+ <File
+ RelativePath="<%documentation_file%>">
+ </File>
+<%endfor%>
+<%endif%>
+ </Filter>
+<%endif%>
+<%if(resource_files && !type_is_static)%>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+<%if(grouped_resource_files)%>
+<%foreach(grouped_resource_files)%>
+ <Filter
+ Name="<%grouped_resource_file%>"
+ Filter="">
+<%foreach(grouped_resource_file->files)%>
+ <File
+ RelativePath="<%grouped_resource_file->file%>">
+ </File>
+<%endfor%>
+ </Filter>
+<%endfor%>
+<%else%>
+<%foreach(resource_files)%>
+ <File
+ RelativePath="<%resource_file%>">
+ </File>
+<%endfor%>
+<%endif%>
+ </Filter>
+<%endif%>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/templates/vc8dll.mpt b/templates/vc8dll.mpt
new file mode 100644
index 00000000..3c4deb84
--- /dev/null
+++ b/templates/vc8dll.mpt
@@ -0,0 +1,52 @@
+// -*- MPC -*-
+// $Id$
+
+conditional_include "common"
+conditional_include "windowscommon"
+
+configurations = Release Debug
+common_defines = WIN32 _WINDOWS _CRT_SECURE_NO_DEPRECATE
+ConfigurationType = 2
+use_lib_modifier = 1
+Detect64BitPortabilityProblems = false
+MinimalRebuild = false
+
+Release {
+ LinkIncremental = 1
+ Optimization = 2
+ defines = NDEBUG
+ output_dir = Release
+ intermediate_dir = Release
+ RuntimeLibrary = 2
+}
+
+Debug {
+ defines = _DEBUG
+ output_dir = .
+ intermediate_dir = Debug
+ lib_modifier = d
+ RuntimeLibrary = 3
+}
+
+MFC Release {
+ LinkIncremental = 1
+ Optimization = 2
+ defines = NDEBUG
+ output_dir = MFC_Release
+ intermediate_dir = MFC_Release
+ lib_modifier = mfc
+ RuntimeLibrary = 2
+ UseOfMFC = 2
+}
+
+MFC Debug {
+ defines = _DEBUG
+ output_dir = MFC_Debug
+ intermediate_dir = MFC_Debug
+ lib_modifier = mfcd
+ RuntimeLibrary = 2
+ UseOfMFC = 2
+}
+
+conditional_include "vcpartialmacros"
+conditional_include "user_vc8dll"
diff --git a/templates/vc8exe.mpt b/templates/vc8exe.mpt
new file mode 100644
index 00000000..795bf0e9
--- /dev/null
+++ b/templates/vc8exe.mpt
@@ -0,0 +1,56 @@
+// -*- MPC -*-
+// $Id$
+
+conditional_include "common"
+conditional_include "windowscommon"
+
+configurations = Release Debug
+common_defines = WIN32 _CONSOLE _CRT_SECURE_NO_DEPRECATE
+ConfigurationType = 1
+SubSystem = 1
+Detect64BitPortabilityProblems = false
+MinimalRebuild = false
+
+Release {
+ LinkIncremental = 1
+ optimize = 2
+ defines = NDEBUG
+ output_dir = Release
+ intermediate_dir = Release
+ RuntimeLibrary = 2
+}
+
+Debug {
+ defines = _DEBUG
+ output_dir = .
+ intermediate_dir = Debug
+ lib_modifier = d
+ RuntimeLibrary = 3
+}
+
+MFC Release {
+ LinkIncremental = 1
+ optimize = 2
+ common_defines = WIN32 _WINDOWS
+ defines = NDEBUG _AFXDLL
+ output_dir = MFC_Release
+ intermediate_dir = MFC_Release
+ lib_modifier = mfc
+ RuntimeLibrary = 2
+ UseOfMFC = 2
+ unicode_mfc_entry = wWinMainCRTStartup
+}
+
+MFC Debug {
+ common_defines = WIN32 _WINDOWS
+ defines = _DEBUG _AFXDLL
+ output_dir = MFC_Debug
+ intermediate_dir = MFC_Debug
+ lib_modifier = mfcd
+ RuntimeLibrary = 3
+ UseOfMFC = 2
+ unicode_mfc_entry = wWinMainCRTStartup
+}
+
+conditional_include "vcpartialmacros"
+conditional_include "user_vc8exe"
diff --git a/templates/vc8lib.mpt b/templates/vc8lib.mpt
new file mode 100644
index 00000000..25340446
--- /dev/null
+++ b/templates/vc8lib.mpt
@@ -0,0 +1,51 @@
+// -*- MPC -*-
+// $Id$
+
+conditional_include "common"
+conditional_include "windowscommon"
+
+configurations = Release Debug
+common_defines = WIN32 _WINDOWS _CRT_SECURE_NO_DEPRECATE
+ConfigurationType = 4
+use_lib_modifier = 1
+Detect64BitPortabilityProblems = false
+MinimalRebuild = false
+
+Release {
+ optimize = 2
+ defines = NDEBUG
+ output_dir = Static_Release
+ intermediate_dir = Static_Release
+ lib_modifier = s
+ RuntimeLibrary = 2
+}
+
+Debug {
+ defines = _DEBUG
+ output_dir = Static_Debug
+ intermediate_dir = Static_Debug
+ lib_modifier = sd
+ RuntimeLibrary = 3
+}
+
+MFC Release {
+ optimize = 2
+ defines = NDEBUG
+ output_dir = Static_MFC_Release
+ intermediate_dir = Static_MFC_Release
+ lib_modifier = mfcs
+ RuntimeLibrary = 2
+ UseOfMFC = 2
+}
+
+MFC Debug {
+ defines = _DEBUG
+ output_dir = Static_MFC_Debug
+ intermediate_dir = Static_MFC_Debug
+ lib_modifier = mfcsd
+ RuntimeLibrary = 3
+ UseOfMFC = 2
+}
+
+conditional_include "vcpartialmacros"
+conditional_include "user_vc8lib"
diff --git a/templates/vc8libexe.mpt b/templates/vc8libexe.mpt
new file mode 100644
index 00000000..3d491fdd
--- /dev/null
+++ b/templates/vc8libexe.mpt
@@ -0,0 +1,53 @@
+// -*- MPC -*-
+// $Id$
+
+conditional_include "common"
+conditional_include "windowscommon"
+
+configurations = Release Debug
+common_defines = WIN32 _CONSOLE _CRT_SECURE_NO_DEPRECATE
+ConfigurationType = 1
+SubSystem = 1
+Detect64BitPortabilityProblems = false
+MinimalRebuild = false
+
+Release {
+ optimize = 2
+ defines = NDEBUG
+ output_dir = Static_Release
+ intermediate_dir = Static_Release
+ lib_modifier = s
+ RuntimeLibrary = 2
+}
+
+Debug {
+ defines = _DEBUG
+ output_dir = Static_Debug
+ intermediate_dir = Static_Debug
+ lib_modifier = sd
+ RuntimeLibrary = 3
+}
+
+MFC Release {
+ optimize = 2
+ defines = NDEBUG _AFXDLL
+ output_dir = Static_MFC_Release
+ intermediate_dir = Static_MFC_Release
+ lib_modifier = mfcs
+ RuntimeLibrary = 2
+ UseOfMFC = 2
+ unicode_mfc_entry = wWinMainCRTStartup
+}
+
+MFC Debug {
+ defines = _DEBUG _AFXDLL
+ output_dir = Static_MFC_Debug
+ intermediate_dir = Static_MFC_Debug
+ lib_modifier = mfcsd
+ RuntimeLibrary = 3
+ UseOfMFC = 2
+ unicode_mfc_entry = wWinMainCRTStartup
+}
+
+conditional_include "vcpartialmacros"
+conditional_include "user_vc8libexe"