|  | @@ -22,17 +22,38 @@
 | 
	
		
			
				|  |  |    if target.build == 'test' and target.language == 'c++':
 | 
	
		
			
				|  |  |      props.extend(['cpptest'])
 | 
	
		
			
				|  |  |    if configuration_type == 'Application':
 | 
	
		
			
				|  |  | -    print target.build
 | 
	
		
			
				|  |  |      if target.build == 'protoc':
 | 
	
		
			
				|  |  |        props.extend(['protoc'])
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |        props.extend(['winsock', 'protobuf', 'zlib', 'openssl'])
 | 
	
		
			
				|  |  | +  else:
 | 
	
		
			
				|  |  | +    props.extend(['winsock'])
 | 
	
		
			
				|  |  |    props.extend(['global'])
 | 
	
		
			
				|  |  | +  dll = project.get('dll', 'no')
 | 
	
		
			
				|  |  |  %>\
 | 
	
		
			
				|  |  |  <?xml version="1.0" encoding="utf-8"?>
 | 
	
		
			
				|  |  |  <Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 | 
	
		
			
				|  |  |  ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |    <ItemGroup Label="ProjectConfigurations">
 | 
	
		
			
				|  |  | +% if dll != 'no':
 | 
	
		
			
				|  |  | +    <ProjectConfiguration Include="Debug-DLL|Win32">
 | 
	
		
			
				|  |  | +      <Configuration>Debug-DLL</Configuration>
 | 
	
		
			
				|  |  | +      <Platform>Win32</Platform>
 | 
	
		
			
				|  |  | +    </ProjectConfiguration>
 | 
	
		
			
				|  |  | +    <ProjectConfiguration Include="Debug-DLL|x64">
 | 
	
		
			
				|  |  | +      <Configuration>Debug-DLL</Configuration>
 | 
	
		
			
				|  |  | +      <Platform>x64</Platform>
 | 
	
		
			
				|  |  | +    </ProjectConfiguration>
 | 
	
		
			
				|  |  | +    <ProjectConfiguration Include="Release-DLL|Win32">
 | 
	
		
			
				|  |  | +      <Configuration>Release-DLL</Configuration>
 | 
	
		
			
				|  |  | +      <Platform>Win32</Platform>
 | 
	
		
			
				|  |  | +    </ProjectConfiguration>
 | 
	
		
			
				|  |  | +    <ProjectConfiguration Include="Release-DLL|x64">
 | 
	
		
			
				|  |  | +      <Configuration>Release-DLL</Configuration>
 | 
	
		
			
				|  |  | +      <Platform>x64</Platform>
 | 
	
		
			
				|  |  | +    </ProjectConfiguration>
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% if dll != 'only':
 | 
	
		
			
				|  |  |      <ProjectConfiguration Include="Debug|Win32">
 | 
	
		
			
				|  |  |        <Configuration>Debug</Configuration>
 | 
	
		
			
				|  |  |        <Platform>Win32</Platform>
 | 
	
	
		
			
				|  | @@ -49,6 +70,7 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |        <Configuration>Release</Configuration>
 | 
	
		
			
				|  |  |        <Platform>x64</Platform>
 | 
	
		
			
				|  |  |      </ProjectConfiguration>
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  |    </ItemGroup>
 | 
	
		
			
				|  |  |    <PropertyGroup Label="Globals">
 | 
	
		
			
				|  |  |      <ProjectGuid>${project_guid if project_guid else project.vs_project_guid}</ProjectGuid>
 | 
	
	
		
			
				|  | @@ -63,57 +85,43 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |    <PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
 | 
	
		
			
				|  |  |      <PlatformToolset>v120</PlatformToolset>
 | 
	
		
			
				|  |  |    </PropertyGroup>
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
 | 
	
		
			
				|  |  | +% if dll != 'only':
 | 
	
		
			
				|  |  | +  <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
 | 
	
		
			
				|  |  |      <ConfigurationType>${configuration_type}</ConfigurationType>
 | 
	
		
			
				|  |  |      <UseDebugLibraries>true</UseDebugLibraries>
 | 
	
		
			
				|  |  |      <CharacterSet>Unicode</CharacterSet>
 | 
	
		
			
				|  |  |    </PropertyGroup>
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
 | 
	
		
			
				|  |  | +  <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
 | 
	
		
			
				|  |  |      <ConfigurationType>${configuration_type}</ConfigurationType>
 | 
	
		
			
				|  |  | -    <UseDebugLibraries>true</UseDebugLibraries>
 | 
	
		
			
				|  |  | +    <UseDebugLibraries>false</UseDebugLibraries>
 | 
	
		
			
				|  |  | +    <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
	
		
			
				|  |  |      <CharacterSet>Unicode</CharacterSet>
 | 
	
		
			
				|  |  |    </PropertyGroup>
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  | +% if dll != 'no':
 | 
	
		
			
				|  |  | +  <PropertyGroup Condition="'$(Configuration)'=='Debug-DLL'" Label="Configuration">
 | 
	
		
			
				|  |  |      <ConfigurationType>${configuration_type}</ConfigurationType>
 | 
	
		
			
				|  |  | -    <UseDebugLibraries>false</UseDebugLibraries>
 | 
	
		
			
				|  |  | -    <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
	
		
			
				|  |  | +    <UseDebugLibraries>true</UseDebugLibraries>
 | 
	
		
			
				|  |  |      <CharacterSet>Unicode</CharacterSet>
 | 
	
		
			
				|  |  |    </PropertyGroup>
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
 | 
	
		
			
				|  |  | +  <PropertyGroup Condition="'$(Configuration)'=='Release-DLL'" Label="Configuration">
 | 
	
		
			
				|  |  |      <ConfigurationType>${configuration_type}</ConfigurationType>
 | 
	
		
			
				|  |  |      <UseDebugLibraries>false</UseDebugLibraries>
 | 
	
		
			
				|  |  |      <WholeProgramOptimization>true</WholeProgramOptimization>
 | 
	
		
			
				|  |  |      <CharacterSet>Unicode</CharacterSet>
 | 
	
		
			
				|  |  |    </PropertyGroup>
 | 
	
		
			
				|  |  | +% endif
 | 
	
		
			
				|  |  |    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
 | 
	
		
			
				|  |  |    <ImportGroup Label="ExtensionSettings">
 | 
	
		
			
				|  |  |    </ImportGroup>
 | 
	
		
			
				|  |  | -  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 | 
	
		
			
				|  |  | -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
	
		
			
				|  |  | -    % for prop in props:
 | 
	
		
			
				|  |  | -    <Import Project="..\${prop}.props" />
 | 
	
		
			
				|  |  | -    % endfor
 | 
	
		
			
				|  |  | -  </ImportGroup>
 | 
	
		
			
				|  |  | -  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
 | 
	
		
			
				|  |  | -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
	
		
			
				|  |  | -    % for prop in props:
 | 
	
		
			
				|  |  | -    <Import Project="..\${prop}.props" />
 | 
	
		
			
				|  |  | -    % endfor
 | 
	
		
			
				|  |  | -  </ImportGroup>
 | 
	
		
			
				|  |  | -  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 | 
	
		
			
				|  |  | -    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
	
		
			
				|  |  | -    % for prop in props:
 | 
	
		
			
				|  |  | -    <Import Project="..\${prop}.props" />
 | 
	
		
			
				|  |  | -    % endfor
 | 
	
		
			
				|  |  | -  </ImportGroup>
 | 
	
		
			
				|  |  | -  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 | 
	
		
			
				|  |  | +  <ImportGroup Label="PropertySheets">
 | 
	
		
			
				|  |  |      <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
 | 
	
		
			
				|  |  |      % for prop in props:
 | 
	
		
			
				|  |  |      <Import Project="..\${prop}.props" />
 | 
	
		
			
				|  |  |      % endfor
 | 
	
		
			
				|  |  |    </ImportGroup>
 | 
	
		
			
				|  |  |    <PropertyGroup Label="UserMacros" />
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 | 
	
		
			
				|  |  | +  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
 | 
	
		
			
				|  |  |      <TargetName>${name}</TargetName>
 | 
	
		
			
				|  |  |      % if "zlib" in packages:
 | 
	
		
			
				|  |  |      <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
 | 
	
	
		
			
				|  | @@ -123,15 +131,83 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |      <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
 | 
	
		
			
				|  |  |      % endif
 | 
	
		
			
				|  |  |    </PropertyGroup>
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
 | 
	
		
			
				|  |  | -    <TargetName>${name}</TargetName>
 | 
	
		
			
				|  |  | -  </PropertyGroup>
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
 | 
	
		
			
				|  |  | -    <TargetName>${name}</TargetName>
 | 
	
		
			
				|  |  | -  </PropertyGroup>
 | 
	
		
			
				|  |  | -  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
 | 
	
		
			
				|  |  | +  <PropertyGroup Condition="'$(Configuration)'=='Release'">
 | 
	
		
			
				|  |  |      <TargetName>${name}</TargetName>
 | 
	
		
			
				|  |  | +    % if "zlib" in packages:
 | 
	
		
			
				|  |  | +    <Linkage-grpc_dependencies_zlib>static</Linkage-grpc_dependencies_zlib>
 | 
	
		
			
				|  |  | +    <Configuration-grpc_dependencies_zlib>Debug</Configuration-grpc_dependencies_zlib>
 | 
	
		
			
				|  |  | +    % endif
 | 
	
		
			
				|  |  | +    % if "openssl" in packages:
 | 
	
		
			
				|  |  | +    <Configuration-grpc_dependencies_openssl>Debug</Configuration-grpc_dependencies_openssl>
 | 
	
		
			
				|  |  | +    % endif
 | 
	
		
			
				|  |  |    </PropertyGroup>
 | 
	
		
			
				|  |  | +  % if dll != 'no':
 | 
	
		
			
				|  |  | +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|Win32'">
 | 
	
		
			
				|  |  | +    <ClCompile>
 | 
	
		
			
				|  |  | +      <PrecompiledHeader>NotUsing</PrecompiledHeader>
 | 
	
		
			
				|  |  | +      <WarningLevel>Level3</WarningLevel>
 | 
	
		
			
				|  |  | +      <Optimization>Disabled</Optimization>
 | 
	
		
			
				|  |  | +      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  | +      <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
 | 
	
		
			
				|  |  | +    </ClCompile>
 | 
	
		
			
				|  |  | +    <Link>
 | 
	
		
			
				|  |  | +      <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
		
			
				|  |  | +      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
	
		
			
				|  |  | +    </Link>
 | 
	
		
			
				|  |  | +  </ItemDefinitionGroup>
 | 
	
		
			
				|  |  | +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug-DLL|x64'">
 | 
	
		
			
				|  |  | +    <ClCompile>
 | 
	
		
			
				|  |  | +      <PrecompiledHeader>NotUsing</PrecompiledHeader>
 | 
	
		
			
				|  |  | +      <WarningLevel>Level3</WarningLevel>
 | 
	
		
			
				|  |  | +      <Optimization>Disabled</Optimization>
 | 
	
		
			
				|  |  | +      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  | +      <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
 | 
	
		
			
				|  |  | +    </ClCompile>
 | 
	
		
			
				|  |  | +    <Link>
 | 
	
		
			
				|  |  | +      <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
		
			
				|  |  | +      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
	
		
			
				|  |  | +    </Link>
 | 
	
		
			
				|  |  | +  </ItemDefinitionGroup>
 | 
	
		
			
				|  |  | +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|Win32'">
 | 
	
		
			
				|  |  | +    <ClCompile>
 | 
	
		
			
				|  |  | +      <WarningLevel>Level3</WarningLevel>
 | 
	
		
			
				|  |  | +      <PrecompiledHeader>NotUsing</PrecompiledHeader>
 | 
	
		
			
				|  |  | +      <Optimization>MaxSpeed</Optimization>
 | 
	
		
			
				|  |  | +      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
	
		
			
				|  |  | +      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
	
		
			
				|  |  | +      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  | +      <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
 | 
	
		
			
				|  |  | +    </ClCompile>
 | 
	
		
			
				|  |  | +    <Link>
 | 
	
		
			
				|  |  | +      <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
		
			
				|  |  | +      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
	
		
			
				|  |  | +      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
	
		
			
				|  |  | +      <OptimizeReferences>true</OptimizeReferences>
 | 
	
		
			
				|  |  | +    </Link>
 | 
	
		
			
				|  |  | +  </ItemDefinitionGroup>
 | 
	
		
			
				|  |  | +  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release-DLL|x64'">
 | 
	
		
			
				|  |  | +    <ClCompile>
 | 
	
		
			
				|  |  | +      <WarningLevel>Level3</WarningLevel>
 | 
	
		
			
				|  |  | +      <PrecompiledHeader>NotUsing</PrecompiledHeader>
 | 
	
		
			
				|  |  | +      <Optimization>MaxSpeed</Optimization>
 | 
	
		
			
				|  |  | +      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
	
		
			
				|  |  | +      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
	
		
			
				|  |  | +      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  | +      <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
 | 
	
		
			
				|  |  | +    </ClCompile>
 | 
	
		
			
				|  |  | +    <Link>
 | 
	
		
			
				|  |  | +      <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
		
			
				|  |  | +      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
	
		
			
				|  |  | +      <EnableCOMDATFolding>true</EnableCOMDATFolding>
 | 
	
		
			
				|  |  | +      <OptimizeReferences>true</OptimizeReferences>
 | 
	
		
			
				|  |  | +    </Link>
 | 
	
		
			
				|  |  | +  </ItemDefinitionGroup>
 | 
	
		
			
				|  |  | +  % endif
 | 
	
		
			
				|  |  | +  % if dll != 'only':
 | 
	
		
			
				|  |  |    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
 | 
	
		
			
				|  |  |      <ClCompile>
 | 
	
		
			
				|  |  |        <PrecompiledHeader>NotUsing</PrecompiledHeader>
 | 
	
	
		
			
				|  | @@ -139,6 +215,7 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |        <Optimization>Disabled</Optimization>
 | 
	
		
			
				|  |  |        <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  |        <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
 | 
	
		
			
				|  |  |      </ClCompile>
 | 
	
		
			
				|  |  |      <Link>
 | 
	
		
			
				|  |  |        <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
	
		
			
				|  | @@ -152,6 +229,7 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |        <Optimization>Disabled</Optimization>
 | 
	
		
			
				|  |  |        <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  |        <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
 | 
	
		
			
				|  |  |      </ClCompile>
 | 
	
		
			
				|  |  |      <Link>
 | 
	
		
			
				|  |  |        <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
	
		
			
				|  | @@ -167,6 +245,7 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |        <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
	
		
			
				|  |  |        <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;_USE_32BIT_TIME_T;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  |        <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
 | 
	
		
			
				|  |  |      </ClCompile>
 | 
	
		
			
				|  |  |      <Link>
 | 
	
		
			
				|  |  |        <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
	
		
			
				|  | @@ -184,6 +263,7 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |        <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
	
		
			
				|  |  |        <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
 | 
	
		
			
				|  |  |        <SDLCheck>true</SDLCheck>
 | 
	
		
			
				|  |  | +      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
 | 
	
		
			
				|  |  |      </ClCompile>
 | 
	
		
			
				|  |  |      <Link>
 | 
	
		
			
				|  |  |        <SubSystem>${get_subsystem(project.is_library)}</SubSystem>
 | 
	
	
		
			
				|  | @@ -192,6 +272,7 @@ ${gen_package_props(packages)}\
 | 
	
		
			
				|  |  |        <OptimizeReferences>true</OptimizeReferences>
 | 
	
		
			
				|  |  |      </Link>
 | 
	
		
			
				|  |  |    </ItemDefinitionGroup>
 | 
	
		
			
				|  |  | +  % endif
 | 
	
		
			
				|  |  |    % if project.get('public_headers',[]):
 | 
	
		
			
				|  |  |    <ItemGroup>
 | 
	
		
			
				|  |  |      % for public_header in project.public_headers:
 |