Revert "[Build] Improve performance of GenDummy (#282)" (#283)
[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="Build" />
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" DependsOnTargets="GenerateDummyProject">
113
114     <ItemGroup>
115       <DummyProjectToBuild Include="$(PublicDummyProjectDir)**\*.csproj" />
116       <DummyProjectToBuild Include="$(InternalDummyProjectDir)**\*.csproj" />
117     </ItemGroup>
118
119     <MSBuild Projects="@(DummyProjectToBuild)"
120              Properties="Configuration=$(Configuration);RestoreSources=$(RestoreSources)"
121              BuildInParallel="false"
122              Targets="Restore" />
123
124     <MSBuild Projects="@(DummyProjectToBuild)"
125              Properties="Configuration=$(Configuration);WarningLevel=0;OutDir=$(OutputDummyDir);ProduceReferenceAssembly=False"
126              BuildInParallel="true"
127              UseResultsCache="true"
128              Targets="Build" />
129
130   </Target>
131
132
133   <Target Name="GenerateDummyProject" Inputs="@(ProjectToBuild)" Outputs="%(Filename)" >
134
135     <PropertyGroup>
136       <GeneratedDummyAssembly>$(OutputDummyDir)%(ProjectToBuild.Filename).dll</GeneratedDummyAssembly>
137       <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Public'" >$(PublicDummyProjectDir)</ClonedProjectsDir>
138       <ClonedProjectsDir Condition="'%(ProjectToBuild.Visibility)' == 'Internal'" >$(InternalDummyProjectDir)</ClonedProjectsDir>
139     </PropertyGroup>
140
141     <Message Text="[GenDummy] %(ProjectToBuild.Filename)" Importance="High" />
142     <Message Text="Directory = %(ProjectToBuild.Directory)" Importance="High" />
143
144     <Exec Command='$(GenDummyCommand) -project %(ProjectToBuild.Filename) -source %(ProjectToBuild.RootDir)%(ProjectToBuild.Directory).. -clonePath $(ClonedProjectsDir)' />
145
146   </Target>
147
148   <Target Name="AfterDummy">
149     <Message Text="Clean Directory" Importance="High" />
150     <RemoveDir Directories="$(PublicDummyProjectDir);$(InternalDummyProjectDir)" />
151   </Target>
152
153 </Project>