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>


Reply via email to