Author: rhuijben
Date: Thu Mar 27 15:43:39 2014
New Revision: 1582363
URL: http://svn.apache.org/r1582363
Log:
Apply some minor tweaks to the Visual C++ 2010, 2012, 2013 templates to make
them (layout wise) more consistent with more modern standard files and to
reduce the size of our debug binaries.
This reduces the size of the combined debug .exe files 30% (=60 MB).
* build/generator/templates/vcnet_vcxproj.ezt
- Generate one property group with a condition instead of many items with
a condition per item.
- Enable string pooling in debug builds and disable incremental linking to
allow dropping unused functions.
- Drop unused functions while linking in debug builds, but do keep duplicates
as removing can make debugging hard.
(E.g. you would see calls into fsx from fsfs when a function wasn't changed
after copying)
Modified:
subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt
Modified: subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt
URL:
http://svn.apache.org/viewvc/subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt?rev=1582363&r1=1582362&r2=1582363&view=diff
==============================================================================
--- subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt (original)
+++ subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt Thu Mar 27
15:43:39 2014
@@ -18,8 +18,7 @@
under the License.
-->
]<?xml version="1.0" encoding="utf-8"?>
-[format "xml"]
-<Project DefaultTargets="Build" ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+[format "xml"]<Project DefaultTargets="Build" ToolsVersion="4.0"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
[for configs][for platforms] <ProjectConfiguration
Include="[configs.name]|[platforms]">
<Configuration>[configs.name]</Configuration>
@@ -33,9 +32,9 @@
[for platforms][for configs] <PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'"
Label="Configuration">
<ConfigurationType>[config_type]</ConfigurationType>
<UseDebugLibraries>[is configs.name
"Debug"]true[else]false[end]</UseDebugLibraries>
+ <PlatformToolset>[toolset_version]</PlatformToolset>
[is configs.name "Release"]
<WholeProgramOptimization>true</WholeProgramOptimization>
-[end] <PlatformToolset>[toolset_version]</PlatformToolset>
- </PropertyGroup>
+[end] </PropertyGroup>
[end][end] <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
@@ -43,21 +42,21 @@
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props"
Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
</ImportGroup>
[end][end] <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
-[for configs][for platforms] <OutDir
Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">$(SolutionDir)[configs.name]\[target.output_dir]\</OutDir>
- <IntDir
Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">$(SolutionDir)[configs.name]\obj\[target.intermediate_dir]\[target.proj_name]\</IntDir>
- <TargetName
Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">[target.output_name_without_ext]</TargetName>
-[is config_type "DynamicLibrary"][is target.output_ext ".dll"][else]
<TargetExt>[target.output_ext]</TargetExt>
-[end][end][end][end] </PropertyGroup>
-[for configs][for platforms] <ItemDefinitionGroup
Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">
+[for platforms][for configs] <PropertyGroup
Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">
+ <OutDir>$(SolutionDir)[configs.name]\[target.output_dir]\</OutDir>
+
<IntDir>$(SolutionDir)[configs.name]\obj\[target.intermediate_dir]\[target.proj_name]\</IntDir>
+ <TargetName>[target.output_name_without_ext]</TargetName>
+[is configs.name "Debug"] <LinkIncremental>false</LinkIncremental>
+[end][is config_type "DynamicLibrary"][is target.output_ext ".dll"][else]
<TargetExt>[target.output_ext]</TargetExt>
+[end][end] </PropertyGroup>
+[end][end][for configs][for platforms] <ItemDefinitionGroup
Condition="'$(Configuration)|$(Platform)'=='[configs.name]|[platforms]'">
<ClCompile>
[is configs.name "Debug"] <Optimization>Disabled</Optimization>
[else] <Optimization>Full</Optimization>
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
<IntrinsicFunctions>true</IntrinsicFunctions>
- <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
- <StringPooling>true</StringPooling>
[end] <AdditionalIncludeDirectories>$(SolutionDir)[configs.name];[for
configs.includes][configs.includes];[end]%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <StringPooling>true</StringPooling>
<PreprocessorDefinitions>[if-any
instrument_apr_pools]APR_POOL_DEBUG=[instrument_apr_pools];[end][is platforms
"x64"]WIN64;[end][for
configs.defines][configs.defines];[end]%(PreprocessorDefinitions)</PreprocessorDefinitions>
<WarningLevel>Level4</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
@@ -72,8 +71,9 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<EnableUAC>true</EnableUAC>
-[is configs.name "Debug"]
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
-[else] <OptimizeReferences>true</OptimizeReferences>
+ <OptimizeReferences>true</OptimizeReferences>
+[is configs.name "Debug"] <EnableCOMDATFolding>false</EnableCOMDATFolding>
+
<IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
[end] </Link>
[else][is config_type "DynamicLibrary"] <Link>
<AdditionalDependencies>[for
configs.libs][configs.libs];[end]%(AdditionalDependencies)</AdditionalDependencies>