[Build] Improve performance of GenDummy (#270)
[platform/core/csapi/tizenfx.git] / build / build.proj
1 <Project DefaultTargets="Build">
2
3   <Import Project="$(MSBuildThisFileDirectory)directories.props" />
4
5   <!-- Build Properties -->
6   <PropertyGroup>
7     <Configuration>Release</Configuration>
8     <GenDummyCommand>dotnet $(GenDummyDir)\GenDummy.dll</GenDummyCommand>
9     <PublicDummyProjectDir>$(ProjectRootDir).dummy\</PublicDummyProjectDir>
10     <InternalDummyProjectDir>$(ProjectRootDir)internal\.dummy\</InternalDummyProjectDir>
11   </PropertyGroup>
12
13   <!-- Projects to build -->
14   <ItemGroup>
15     <ProjectToBuild Include="$(ProjectSrcDir)\$(Project)\$(Project).csproj" Condition="'$(Project)' != ''">
16       <Visibility>Public</Visibility>
17     </ProjectToBuild>
18     <ProjectToBuild Include="$(ProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''">
19       <Visibility>Public</Visibility>
20     </ProjectToBuild>
21     <ProjectToBuild Include="$(InternalProjectSrcDir)**\*.csproj" Condition="'$(Project)' == ''">
22       <Visibility>Internal</Visibility>
23     </ProjectToBuild>
24   </ItemGroup>
25
26   <!-- Nuspec files to pack -->
27   <ItemGroup>
28     <NuspecFiles Include="$(ProjectRootDir)pkg\*.nuspec" />
29   </ItemGroup>
30
31   <!--
32     Target : Clean
33     ==============
34     Delete all artifacts,
35     including the Artifacts/ directory and the obj/ directories for all projects.
36   -->
37   <Target Name="Clean">
38
39     <ItemGroup>
40       <ProjectIntermediateAllFiles Include="$(ProjectSrcDir)**\obj\*" />
41       <ProjectIntermediateAllFiles Include="$(InternalProjectSrcDir)**\obj\*" />
42       <ProjectIntermediateDir Include="@(ProjectIntermediateAllFiles->'%(RootDir)%(Directory)'->Distinct())" />
43     </ItemGroup>
44
45     <ItemGroup>
46       <DirToRemove Include="$(OutputBaseDir)" />
47       <DirToRemove Include="@(ProjectIntermediateDir)" />
48       <DirToRemove Include="$(PublicDummyProjectDir)" />
49       <DirToRemove Include="$(InternalDummyProjectDir)" />
50     </ItemGroup>
51
52     <RemoveDir Directories="@(DirToRemove)" />
53
54   </Target>
55
56   <!--
57     Target : Restore
58     ==============
59     Restore all projects.
60   -->
61   <Target Name="Restore">
62
63     <MSBuild Projects="@(ProjectToBuild)"
64              Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
65              BuildInParallel="false"
66              Targets="Restore" />
67
68   </Target>
69
70   <!--
71     Target : Build
72     ==============
73     Build all projects.
74   -->
75   <Target Name="Build">
76
77     <MSBuild Projects="@(ProjectToBuild)"
78              Properties="Configuration=$(Configuration)"
79              BuildInParallel="true"
80              UseResultsCache="true"
81              Targets="Rebuild" />
82
83     <MSBuild Projects="@(ProjectToBuild)"
84              Properties="Configuration=$(Configuration)"
85              BuildInParallel="false"
86              Targets="CopyToArtifactsDirectory" />
87
88   </Target>
89
90   <!--
91     Target : Pack
92     ==============
93     Generate nuget packages.
94   -->
95   <Target Name="Pack">
96
97     <MSBuild Projects="$(MSBuildThisFileDirectory)pack.csproj"
98              Properties="NoBuild=True"
99              Targets="Restore" />
100
101     <MSBuild Projects="$(MSBuildThisFileDirectory)pack.csproj"
102              Properties="NoBuild=True;Version=$(Version);NuspecFile=%(NuspecFiles.Identity)"
103              Targets="Pack" />
104
105   </Target>
106
107   <!--
108     Target : Dummy
109     ==============
110     Generate dummy assemblies of all projects.
111   -->
112   <Target Name="Dummy">
113
114     <MSBuild Projects="@(ProjectToBuild)"
115              Properties="Configuration=$(Configuration);IsDummyBuild=True"
116              BuildInParallel="true"
117              UseResultsCache="true"
118              Targets="Rebuild" />
119
120     <MSBuild Projects="@(ProjectToBuild)"
121              Properties="Configuration=$(Configuration)"
122              BuildInParallel="false"
123              Targets="CopyToDummyArtifactsDirectory" />
124
125   </Target>
126
127 </Project>