summaryrefslogtreecommitdiff
path: root/csharp/msbuild/ice.proj
blob: 87b3f9ccc5777f7e8f4f0b7a1dee214ed45319da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup Condition="'$(Configuration)' == ''">
      <Configuration>Release</Configuration>
    </PropertyGroup>

    <Import Project="$(MSBuildThisFileDirectory)\..\..\config\icebuilder.props" />
    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

    <Import Project="$(MSBuildThisFileDirectory)\..\..\config\Ice.common.targets" />

    <Target Name="RemovePackages">
      <Exec Command="rmdir /s /q $(MSBuildThisFileDirectory)packages" Condition="Exists('$(MSBuildThisFileDirectory)packages')" />
    </Target>

    <Target Name="NuGetRestore" DependsOnTargets="GetNuGet">
      <Exec Command="$(NuGetExe) restore $(MSBuildThisFileDirectory)ice.test.sln" Condition="'$(ICE_BIN_DIST)' == 'all'"/>
    </Target>

    <PropertyGroup>
        <SliceCompilers Condition="'$(DefaultPlatformToolset)' == 'v140'">c++98\slice2cs;c++98\slice2html</SliceCompilers>
        <SliceCompilers Condition="'$(DefaultPlatformToolset)' == 'v120'">slice2cs;slice2html</SliceCompilers>
    </PropertyGroup>

    <Target Name="SliceCompilers" Condition="'$(ICE_BIN_DIST)' != 'all'">
        <MSBuild Projects="$(MSBuildThisFileDirectory)..\..\cpp\msbuild\ice.proj"
                Targets="NuGetRestore"
                BuildInParallel="true"/>

        <MSBuild Projects="$(MSBuildThisFileDirectory)..\..\cpp\msbuild\ice.$(DefaultPlatformToolset).sln"
                 Targets="$(SliceCompilers)"
                 BuildInParallel="true"
                 Properties="Platform=$(Platform);Configuration=$(Configuration.Replace('-Managed', ''))"/>
    </Target>

    <ItemGroup>
        <DistSolution Include="ice.sln">
          <Properties>Configuration=$(Configuration);Platform=Any CPU</Properties>
        </DistSolution>

        <TestSoution Include="ice.test.sln">
          <Properties>Configuration=$(Configuration.Replace("-Managed", ""));Platform=Any CPU</Properties>
        </TestSoution>
    </ItemGroup>

    <Target Name="BuildDist" DependsOnTargets="SliceCompilers" Condition="'$(ICE_BIN_DIST)' != 'all'">
        <MSBuild Projects="@(DistSolution)"
                 BuildInParallel="true"
                 Properties="%(Properties)"/>
    </Target>

    <Target Name="CleanDist" Condition="'$(ICE_BIN_DIST)' != 'all'">
        <MSBuild Projects="@(DistSolution)"
                 BuildInParallel="true"
                 Properties="%(Properties)"
                 Targets="Clean" />
    </Target>

    <Target Name="Build" DependsOnTargets="NuGetRestore;BuildDist;SliceCompilers">
        <MSBuild Projects="@(TestSoution)"
                 BuildInParallel="true"
                 Properties="%(Properties)" />
    </Target>

    <Target Name="Clean" DependsOnTargets="CleanDist">
        <MSBuild Projects="@(TestSoution)" BuildInParallel="true" Targets="Clean" Properties="%(Properties)" />
    </Target>

    <Import Project="$(MSBuildThisFileDirectory)ice.common.targets" />

    <Target Name="NuGetPack" DependsOnTargets="BuildDist">
        <RemoveDir Directories="zeroc.ice.net" />
        <MSBuild Projects="ice.nuget.targets"
                 Properties="PackageDirectory=zeroc.ice.net"/>

        <Copy SourceFiles="zeroc.ice.net.nuspec"
              DestinationFolder="zeroc.ice.net" />

        <Copy SourceFiles="$(MSBuildThisFileDirectory)..\..\ICE_LICENSE"
              DestinationFiles="zeroc.ice.net\ICE_LICENSE.txt" />
        <Copy SourceFiles="$(MSBuildThisFileDirectory)..\..\LICENSE"
              DestinationFiles="zeroc.ice.net\LICENSE.txt" />

        <!-- Generate iceboxnet.exe.config with the correct assembly pulbic key token and assembly paths -->
        <GetPublicKeyToken AssemblyFile="$(MSBuildThisFileDirectory)..\Assemblies\Ice.dll">
          <Output TaskParameter="PublicKeyToken" PropertyName="PublicKeyToken"/>
        </GetPublicKeyToken>

        <WriteFileWithReplacements InputFile="$(MSBuildThisFileDirectory)iceboxnet.exe.config.release"
                                   OutputFile="$(MSBuildThisFileDirectory)zeroc.ice.net\tools\iceboxnet.exe.config"
                                   Tokens="@PublicKeyToken@;@AssemblyDir@"
                                   Replacements="$(PublicKeyToken);..\lib"
                                   Condition="'$(PublicKeyToken)' != ''"/>

        <WriteFileWithReplacements InputFile="$(MSBuildThisFileDirectory)iceboxnet.exe.config.release.unsigned"
                                   OutputFile="$(MSBuildThisFileDirectory)zeroc.ice.net\tools\iceboxnet.exe.config"
                                   Tokens="@AssemblyDir@"
                                   Replacements="..\lib"
                                   Condition="'$(PublicKeyToken)' == ''"/>

        <!-- Copy bzip2 native dll next to iceboxnet.exe -->
        <Copy SourceFiles="$(MSBuildThisFileDirectory)..\..\cpp\msbuild\packages\bzip2.v140.1.0.6.9\build\native\bin\x64\MT-Release\bzip2.dll"
              DestinationFiles="$(MSBuildThisFileDirectory)zeroc.ice.net\tools\bzip2.dll"/>

        <Copy SourceFiles="$(MSBuildThisFileDirectory)..\..\cpp\msbuild\packages\bzip2.v140.1.0.6.9\build\native\bin\x64\MT-Release\bzip2.pdb"
              DestinationFiles="$(MSBuildThisFileDirectory)zeroc.ice.net\tools\bzip2.pdb"/>

        <Copy SourceFiles="zeroc.ice.net.props"
              DestinationFiles="zeroc.ice.net\build\zeroc.ice.net.props"/>

        <Exec Command="$(NuGetExe) pack -NoPackageAnalysis -NonInteractive"
              WorkingDirectory="zeroc.ice.net"/>
    </Target>
</Project>