Common.targets 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3. <!-- **********************************************************************************************
  4. Targets For FullBuild
  5. *********************************************************************************************** -->
  6. <Target Name="_FullBuild" DependsOnTargets="_CleanOutputDirectory;_BuildProtoGen;_GenerateSource;_CopyGeneratedSource">
  7. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;TargetVersion=2" Targets="_BuildAllConfigurations" />
  8. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;TargetVersion=3" Targets="_BuildAllConfigurations" />
  9. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;TargetVersion=4" Targets="_BuildAllConfigurations" />
  10. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="" Targets="_CompletePackages" />
  11. </Target>
  12. <Target Name="_BuildAllConfigurations">
  13. <!-- Release Package -->
  14. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Release" Targets="_BuildConfiguration" />
  15. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Release_Silverlight" Targets="_BuildConfiguration" />
  16. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);PackageName=Release-$(ForcedFrameworkVersion)" Targets="_GeneratePackage" />
  17. <!-- Full Package -->
  18. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Debug" Targets="_BuildConfiguration" />
  19. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Debug_Silverlight" Targets="_BuildConfiguration" />
  20. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);PackageName=Full-$(ForcedFrameworkVersion)" Targets="_GeneratePackage" />
  21. </Target>
  22. <Target Name="_BuildConfiguration" DependsOnTargets="_ReportConfig;_Clean;_BuildSolution;_Test;_PreparePackageComponent" />
  23. <Target Name="_ReportConfig">
  24. <Message Importance="high" Text="
  25. Building $(BuildConfiguration) configuration for .NET Framework $(ForcedFrameworkVersion) $(Platform)" />
  26. </Target>
  27. <!-- **********************************************************************************************
  28. Targets For Build
  29. *********************************************************************************************** -->
  30. <Target Name="_BuildSolution">
  31. <Message Text="Running $(SolutionTarget) $(BuildConfiguration) with $(BuildTools) on $(SolutionFile)" Importance="normal" />
  32. <MSBuild Targets="$(SolutionTarget)" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)"
  33. Properties="Configuration=$(BuildConfiguration);Platform=$(Platform);TargetFrameworkVersion=$(ForcedFrameworkVersion);TreatWarningsAsErrors=true;SilverlightVersion=$(SilverlightVersion)"
  34. />
  35. </Target>
  36. <Target Name="_Clean">
  37. <RemoveDir Directories="@(WorkingDirectories)" Condition="Exists(%(WorkingDirectories.Identity))" />
  38. <MakeDir Directories="@(WorkingDirectories)" />
  39. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Clean;BuildConfiguration=$(BuildConfiguration);Platform=$(Platform)" Targets="_BuildSolution" ContinueOnError="true" />
  40. </Target>
  41. <Target Name="_Compile">
  42. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;BuildConfiguration=$(BuildConfiguration);Platform=$(Platform)" Targets="_BuildSolution" />
  43. </Target>
  44. <Target Name="Requires20">
  45. <Error Text="Must be run with TargetVersion=2" Condition=" '$(TargetVersion)' != '2' " />
  46. </Target>
  47. <Target Name="RequiresRelease">
  48. <Error Text="Must be run with BuildConfiguration=Release" Condition=" '$(BuildConfiguration)' != 'Release' " />
  49. </Target>
  50. <!-- **********************************************************************************************
  51. Targets For GenerateSource
  52. *********************************************************************************************** -->
  53. <Target Name="_BuildProtoGen">
  54. <MSBuild Targets="Rebuild" ToolsVersion="3.5"
  55. Projects="$(ProjectDirectory)\src\ProtocolBuffers\ProtocolBuffers.csproj;$(ProjectDirectory)\src\ProtoGen\ProtoGen.csproj"
  56. Properties="Step=_BuildProtoGen;Configuration=Release;Platform=AnyCPU;TargetFrameworkVersion=v2.0;DebugType=none;DocumentationFile=;TreatWarningsAsErrors=true;OutputPath=$(BuildOutputDirectory)\ProtoGen;" />
  57. </Target>
  58. <Target Name="_CleanTempSource">
  59. <Message Importance="normal" Text="Cleaning source directory $(SourceTempDirectory)"/>
  60. <RemoveDir Directories="$(SourceTempDirectory)" Condition="Exists($(SourceTempDirectory))" />
  61. <MakeDir Directories="$(SourceTempDirectory)" />
  62. </Target>
  63. <Target Name="_GenerateSource" DependsOnTargets="_CleanTempSource">
  64. <Message Importance="high" Text="Generating source from proto files" />
  65. <Exec Command="$(ProtocExePath) --proto_path=$(ProtosDirectory) --descriptor_set_out=compiled.pb @(Protos->'%(RelativeDir)%(Filename)%(Extension)', ' ')" WorkingDirectory="$(SourceTempDirectory)" />
  66. <Exec Command="$(ProtogenExePath) compiled.pb" WorkingDirectory="$(SourceTempDirectory)" />
  67. </Target>
  68. <Target Name="_CopyGeneratedSource" DependsOnTargets="_GenerateSource">
  69. <Copy SourceFiles="%(GeneratedSource.Identity)" DestinationFiles="%(GeneratedSource.TargetDirectory)\%(GeneratedSource.Filename)%(GeneratedSource.Extension)" />
  70. </Target>
  71. <!-- **********************************************************************************************
  72. Targets For Test
  73. *********************************************************************************************** -->
  74. <Target Name="_Test">
  75. <CallTarget Targets="_RunTests" />
  76. </Target>
  77. <Target Name="_RunTests">
  78. <!-- NUnit -->
  79. <Copy SourceFiles="$(NUnitExeConfig)" DestinationFiles="$(NUnitExePath).config" />
  80. <Exec Condition="$(BuildConfiguration)=='Debug' or $(BuildConfiguration)=='Release'"
  81. Command="&quot;$(NUnitExePath)&quot; /nologo /noshadow %(TestContainer.Identity) /xml:$(BuildTempDirectory)\%(TestContainer.Filename).xml" />
  82. <!-- StatLight -->
  83. <Exec Condition="$(BuildConfiguration)=='Debug_Silverlight' or $(BuildConfiguration)=='Release_Silverlight'"
  84. Command="&quot;$(StatLightExePath)&quot; -x %(StatLightTestContainer.Identity) --ReportOutputFileType=NUnit --ReportOutputFile=$(BuildTempDirectory)\%(StatLightTestContainer.Filename).xml" />
  85. </Target>
  86. <!-- **********************************************************************************************
  87. Targets For Package
  88. *********************************************************************************************** -->
  89. <Target Name="_CleanOutputDirectory">
  90. <RemoveDir Directories="$(BuildOutputPackage)" ContinueOnError="true" />
  91. <RemoveDir Directories="$(BuildOutputDirectory)" ContinueOnError="true" />
  92. <MakeDir Directories="$(BuildOutputDirectory)" ContinueOnError="true" />
  93. </Target>
  94. <Target Name="_PreparePackageComponent">
  95. <Copy SourceFiles="@(DynamicPackageItem)" DestinationFolder="$(BuildOutputPackage)\$(BuildConfiguration)\%(DynamicPackageItem.TargetDirectory)\%(DynamicPackageItem.RecursiveDir)" />
  96. </Target>
  97. <Target Name="_GeneratePackage">
  98. <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputPackage)\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
  99. <Exec Command="&quot;$(ZipExePath)&quot; a -tzip ..\$(PackageName).zip * -r" WorkingDirectory="$(BuildOutputPackage)" />
  100. </Target>
  101. <Target Name="_CompletePackages">
  102. <ItemGroup>
  103. <ReleasePackageItem Include="$(BuildOutputDirectory)\ProtoGen\*">
  104. <TargetDirectory>\Protoc</TargetDirectory>
  105. </ReleasePackageItem>
  106. <!-- RELEASE -->
  107. <ReleasePackageItem Include="$(BuildOutputDirectory)\v2.0\Release\*">
  108. <TargetDirectory>\Release\v2.0</TargetDirectory>
  109. </ReleasePackageItem>
  110. <ReleasePackageItem Include="$(BuildOutputDirectory)\v2.0\Release_Silverlight\*">
  111. <TargetDirectory>\Release_Silverlight\v2.0</TargetDirectory>
  112. </ReleasePackageItem>
  113. <ReleasePackageItem Include="$(BuildOutputDirectory)\v3.5\Release\*">
  114. <TargetDirectory>\Release\v3.5</TargetDirectory>
  115. </ReleasePackageItem>
  116. <ReleasePackageItem Include="$(BuildOutputDirectory)\v3.5\Release_Silverlight\*">
  117. <TargetDirectory>\Release_Silverlight\v3.0</TargetDirectory>
  118. </ReleasePackageItem>
  119. <ReleasePackageItem Include="$(BuildOutputDirectory)\v4.0\Release\*">
  120. <TargetDirectory>\Release\v4.0</TargetDirectory>
  121. </ReleasePackageItem>
  122. <ReleasePackageItem Include="$(BuildOutputDirectory)\v4.0\Release_Silverlight\*">
  123. <TargetDirectory>\Release_Silverlight\v4.0</TargetDirectory>
  124. </ReleasePackageItem>
  125. <!-- DEBUG -->
  126. <DebugPackageItem Include="$(BuildOutputDirectory)\v2.0\Debug\*">
  127. <TargetDirectory>\Debug\v2.0</TargetDirectory>
  128. </DebugPackageItem>
  129. <DebugPackageItem Include="$(BuildOutputDirectory)\v2.0\Debug_Silverlight\*">
  130. <TargetDirectory>\Debug_Silverlight\v2.0</TargetDirectory>
  131. </DebugPackageItem>
  132. <DebugPackageItem Include="$(BuildOutputDirectory)\v3.5\Debug\*">
  133. <TargetDirectory>\Debug\v3.5</TargetDirectory>
  134. </DebugPackageItem>
  135. <DebugPackageItem Include="$(BuildOutputDirectory)\v3.5\Debug_Silverlight\*">
  136. <TargetDirectory>\Debug_Silverlight\v3.0</TargetDirectory>
  137. </DebugPackageItem>
  138. <DebugPackageItem Include="$(BuildOutputDirectory)\v4.0\Debug\*">
  139. <TargetDirectory>\Debug\v4.0</TargetDirectory>
  140. </DebugPackageItem>
  141. <DebugPackageItem Include="$(BuildOutputDirectory)\v4.0\Debug_Silverlight\*">
  142. <TargetDirectory>\Debug_Silverlight\v4.0</TargetDirectory>
  143. </DebugPackageItem>
  144. </ItemGroup>
  145. <RemoveDir Directories="$(BuildOutputDirectory)\Release;$(BuildOutputDirectory)\Full" ContinueOnError="true" />
  146. <MakeDir Directories="$(BuildOutputDirectory)\Release;$(BuildOutputDirectory)\Full" ContinueOnError="true" />
  147. <!-- Copy files for Release -->
  148. <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputDirectory)\Release\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
  149. <Copy SourceFiles="@(ReleasePackageItem)" DestinationFolder="$(BuildOutputDirectory)\Release\%(ReleasePackageItem.TargetDirectory)\%(ReleasePackageItem.RecursiveDir)" />
  150. <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildOutputDirectory)\release-binaries.zip * -r" WorkingDirectory="$(BuildOutputDirectory)\Release" />
  151. <!-- Copy files for Debug -->
  152. <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputDirectory)\Full\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
  153. <Copy SourceFiles="@(ReleasePackageItem)" DestinationFolder="$(BuildOutputDirectory)\Full\%(ReleasePackageItem.TargetDirectory)\%(ReleasePackageItem.RecursiveDir)" />
  154. <Copy SourceFiles="@(DebugPackageItem)" DestinationFolder="$(BuildOutputDirectory)\Full\%(DebugPackageItem.TargetDirectory)\%(DebugPackageItem.RecursiveDir)" />
  155. <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildOutputDirectory)\full-binaries.zip * -r" WorkingDirectory="$(BuildOutputDirectory)\Full" />
  156. </Target>
  157. <!-- **********************************************************************************************
  158. Targets For Benchmark
  159. *********************************************************************************************** -->
  160. <Target Name="_GenerateBenchmarkSource">
  161. <PropertyGroup>
  162. <Args>$(BenchmarkProtosDirectory)\google_size.proto $(BenchmarkProtosDirectory)\google_speed.proto</Args>
  163. </PropertyGroup>
  164. <Exec Command="$(ProtocExePath) --proto_path=$(BenchmarkProtosDirectory);$(ProtosDirectory) --include_imports=compiled.pb --descriptor_set_out=compiled.pb $(Args)" WorkingDirectory="$(SourceTempDirectory)" />
  165. <Exec Command="$(ProtogenExePath) compiled.pb" WorkingDirectory="$(SourceTempDirectory)" />
  166. </Target>
  167. <Target Name="_CompileBenchmarkAssemblyInFramework20" Condition=" '$(MSBuildToolsVersion)' != '2.0' ">
  168. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;BuildConfiguration=$(BuildConfiguration);Platform=$(Platform)"
  169. Targets="_CompileBenchmarkAssembly" ToolsVersion="2.0" />
  170. </Target>
  171. <Target Name="_CompileBenchmarkAssembly" DependsOnTargets="_GenerateBenchmarkSource">
  172. <Error Text="Must be run with Framework 2.0" Condition=" '$(MSBuildToolsVersion)' != '2.0' " />
  173. <ItemGroup>
  174. <BenchmarkSources Include="$(SourceTempDirectory)\GoogleSizeProtoFile.cs" />
  175. <BenchmarkSources Include="$(SourceTempDirectory)\GoogleSpeedProtoFile.cs" />
  176. <BenchmarkSources Include="$(SourceDirectory)\ProtoBench\Properties\AssemblyInfo.cs" />
  177. </ItemGroup>
  178. <Csc
  179. TargetType="library"
  180. OutputAssembly="$(BuildTempDirectory)\BenchmarkTypes.dll"
  181. Optimize="true"
  182. Sources="@(BenchmarkSources)"
  183. References="$(SourceDirectory)\ProtocolBuffers\bin\$(BuildConfiguration)\Google.ProtocolBuffers.dll"
  184. />
  185. </Target>
  186. <Target Name="_PrepareBenchmarkEnvironment" DependsOnTargets="_CompileBenchmarkAssemblyInFramework20">
  187. <ItemGroup>
  188. <BenchmarkResources Include="$(BenchmarkProtosDirectory)\google_message1.dat" />
  189. <BenchmarkResources Include="$(BenchmarkProtosDirectory)\google_message2.dat" />
  190. <BenchmarkResources Include="$(SourceDirectory)\ProtocolBuffers\bin\$(BuildConfiguration)\Google.ProtocolBuffers.dll" />
  191. <BenchmarkResources Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(BuildConfiguration)\Google.ProtocolBuffers.Serialization.dll" />
  192. <BenchmarkResources Include="$(SourceDirectory)\ProtoBench\bin\$(BuildConfiguration)\ProtoBench.exe" />
  193. </ItemGroup>
  194. <Copy SourceFiles="@(BenchmarkResources)" DestinationFolder="$(BuildTempDirectory)" />
  195. </Target>
  196. <Target Name="_RunBenchmarks" DependsOnTargets="_PrepareBenchmarkEnvironment">
  197. <ItemGroup>
  198. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage1,BenchmarkTypes" />
  199. <BenchmarkParameter Include="google_message1.dat" />
  200. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage1,BenchmarkTypes" />
  201. <BenchmarkParameter Include="google_message1.dat" />
  202. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage2,BenchmarkTypes" />
  203. <BenchmarkParameter Include="google_message2.dat" />
  204. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage2,BenchmarkTypes" />
  205. <BenchmarkParameter Include="google_message2.dat" />
  206. </ItemGroup>
  207. <Message Text="Running $(ProtoBenchExePath) from $(BuildTempDirectory)" />
  208. <Exec Command="&quot;$(ProtoBenchExePath)&quot; $(BenchmarkArgs) @(BenchmarkParameter->'%(Identity)', ' ') &quot;/log:$(BenchmarkOutputFile)&quot;"
  209. WorkingDirectory="$(BuildTempDirectory)" />
  210. </Target>
  211. </Project>