Common.targets 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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 Clean
  5. *********************************************************************************************** -->
  6. <Target Name="_CleanFolder">
  7. <Message Importance="normal" Text="Removing temporary directory '$(CleanFolderDirectory)'"/>
  8. <Error Text="Can not remove empty directory name." Condition=" '$(CleanFolderDirectory)' == '' " />
  9. <Exec WorkingDirectory="$(MSBuildProjectDirectory)" Condition="Exists($(CleanFolderDirectory))" Outputs="@(Ignore)"
  10. Command="MOVE /Y &quot;$(CleanFolderDirectory)&quot; &quot;$(CleanFolderDirectory)-deleted&quot; > NUL" />
  11. <RemoveDir Directories="$(CleanFolderDirectory)-deleted" Condition="Exists('$(CleanFolderDirectory)-deleted')" />
  12. </Target>
  13. <Target Name="_CleanTempOutput">
  14. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=%(TempBuildFolder.Identity);" Targets="_CleanFolder" />
  15. </Target>
  16. <Target Name="_CleanAll" DependsOnTargets="_CleanTempOutput">
  17. <MakeDir Directories="$(BuildTempDirectory)" />
  18. <MakeDir Directories="$(BuildOutputDirectory)" />
  19. </Target>
  20. <!-- **********************************************************************************************
  21. Targets For Build
  22. *********************************************************************************************** -->
  23. <Target Name="_CompileAll">
  24. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;" Targets="_BuildAllConfigurations" />
  25. </Target>
  26. <Target Name="_BuildAllConfigurations">
  27. <MSBuild Properties="TargetVersion=cf20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  28. <MSBuild Properties="TargetVersion=cf35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  29. <MSBuild Properties="TargetVersion=net20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  30. <MSBuild Properties="TargetVersion=net35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  31. <MSBuild Properties="TargetVersion=net40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  32. <MSBuild Properties="TargetVersion=sl20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  33. <MSBuild Properties="TargetVersion=sl30;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  34. <MSBuild Properties="TargetVersion=sl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  35. <MSBuild Properties="TargetVersion=pl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" />
  36. </Target>
  37. <!-- **********************************************************************************************
  38. Targets For Tools
  39. *********************************************************************************************** -->
  40. <Target Name="_BuildTools">
  41. <MSBuild Targets="Build" ToolsVersion="3.5" Projects="$(ProjectDirectory)\src\ProtocolBuffers.sln" Properties="Configuration=Release;Platform=Any CPU;" />
  42. <Copy SourceFiles="%(ToolsOutputItem.Identity)" DestinationFolder="$(BuildOutputDirectory)\tools" />
  43. <Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.v2.0.config" DestinationFiles="$(NUnitExePath).config" />
  44. <Exec
  45. WorkingDirectory="%(ToolsTestContainer.RootDir)%(ToolsTestContainer.Directory)"
  46. Command="&quot;$(NUnitExePath)&quot; /nologo /noshadow &quot;%(ToolsTestContainer.Identity)&quot; /xml:&quot;$(BuildTempDirectory)\%(ToolsTestContainer.Filename).xml&quot;" />
  47. </Target>
  48. <!-- **********************************************************************************************
  49. Targets For GenerateSource
  50. *********************************************************************************************** -->
  51. <Target Name="_GenerateProjects">
  52. <Exec Command="&quot;$(CsProjectProjector)&quot; csproj_templates src\ProtocolBuffersLibrary.sln" WorkingDirectory="$(ProjectDirectory)" />
  53. </Target>
  54. <Target Name="_CleanTempSource">
  55. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=$(SourceTempDirectory);" Targets="_CleanFolder" />
  56. <MakeDir Directories="$(SourceTempDirectory)" />
  57. </Target>
  58. <Target Name="_GenerateSource" DependsOnTargets="_CleanTempSource">
  59. <Message Importance="high" Text="Generating source from proto files" />
  60. <Exec Command="&quot;$(ProtocExePath)&quot; --proto_path=$(ProtosDirectory) --descriptor_set_out=compiled.pb @(Protos->'%(RelativeDir)%(Filename)%(Extension)', ' ')" WorkingDirectory="$(SourceTempDirectory)" />
  61. <Exec Command="&quot;$(ProtogenExePath)&quot; compiled.pb" WorkingDirectory="$(SourceTempDirectory)" />
  62. </Target>
  63. <Target Name="_CopyGeneratedSource" DependsOnTargets="_GenerateSource">
  64. <Copy SourceFiles="%(GeneratedSource.Identity)" DestinationFiles="%(GeneratedSource.TargetDirectory)\%(GeneratedSource.Filename)%(GeneratedSource.Extension)" />
  65. </Target>
  66. <!-- **********************************************************************************************
  67. Targets For Package
  68. *********************************************************************************************** -->
  69. <Target Name="_PackageAll">
  70. <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=_Publish;" Targets="_BuildAllConfigurations" />
  71. </Target>
  72. <Target Name="_GeneratePackage">
  73. <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputPackage)\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
  74. <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildTempDirectory)\$(PackageName)-binaries.zip * -x!*.pdb -r" WorkingDirectory="$(BuildOutputPackage)" />
  75. <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildTempDirectory)\$(PackageName)-symbols.zip * -r" WorkingDirectory="$(BuildOutputPackage)" />
  76. </Target>
  77. <!-- **********************************************************************************************
  78. Targets For Benchmark
  79. *********************************************************************************************** -->
  80. <Target Name="_RunBenchmarks">
  81. <ItemGroup>
  82. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage1,ProtoBench" />
  83. <BenchmarkParameter Include="google_message1.dat" />
  84. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage1,ProtoBench" />
  85. <BenchmarkParameter Include="google_message1.dat" />
  86. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage2,ProtoBench" />
  87. <BenchmarkParameter Include="google_message2.dat" />
  88. <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage2,ProtoBench" />
  89. <BenchmarkParameter Include="google_message2.dat" />
  90. </ItemGroup>
  91. <Message Text="Running ProtoBench.exe" />
  92. <Exec Command="ProtoBench.exe $(BenchmarkArgs) @(BenchmarkParameter->'%(Identity)', ' ') &quot;/log:$(BenchmarkOutputFile)&quot;"
  93. WorkingDirectory="$(SourceDirectory)\ProtoBench\bin\NET35\Release" />
  94. </Target>
  95. </Project>