<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!--
 
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at
  
 http://www.apache.org/licenses/LICENSE-2.0
  
 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 
-->
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
	
	<Import Project="version.targets"  />
  	<PropertyGroup>
		<Configuration Condition="'$(Configuration)' == 'debug'">Debug</Configuration>
		<Configuration Condition="'$(Configuration)' == '' Or '$(Configuration)' == 'release'">Release</Configuration>
		<Area Condition="'$(Area)' == ''">all</Area>

		<!-- This path is a bit redundant -->
		<TempFolder>$(TEMP)</TempFolder>
		<BuildFolder>$(MSBuildProjectDirectory)\..</BuildFolder>
		<ScriptsFolder>$(MSBuildProjectDirectory)</ScriptsFolder>
		<RootFolder>$(MSBuildProjectDirectory)\..\..\</RootFolder>
		<Executable></Executable>
	 </PropertyGroup>
	 
	 <PropertyGroup>
	 	<BinFolder>$(BuildFolder)\bin</BinFolder>
	 	<SourceFolder>$(RootFolder)src</SourceFolder>
		<TestFolder>$(RootFolder)test</TestFolder>
		<LibFolder>$(RootFolder)lib</LibFolder>
		<PackagesFolder>$(RootFolder)lib</PackagesFolder>
 	</PropertyGroup>
 	<PropertyGroup>
 		<PackageManager>$(LibFolder)\Nuget\NuGet.exe pack </PackageManager>
 		<PackageManagerOptions>-Version $(Version) -OutputDirectory</PackageManagerOptions>
 	</PropertyGroup>
 	
	<!-- To Execute commands on mono like running nunit, it requires running through the program mono.exe -->
	<PropertyGroup Condition="'$(NETFRAMEWORK)' == 'mono'">
		<Executable>mono</Executable>
	</PropertyGroup>


	
	  <Import Project="All/project.targets" Condition="'$(Area)' == 'all'" />
	  <Import Project="Analyzers/project.targets" Condition="'$(Area)' == 'analyzers'" />
	  <Import Project="Contrib/project.targets" Condition="'$(Area)' == 'contrib'" />
	  <Import Project="Contrib-Core/project.targets" Condition="'$(Area)' == 'contrib-core'" />
	  <Import Project="Core/project.targets" Condition="'$(Area)' == 'core'" />
	  <Import Project="FastVectorHighlighter/project.targets" Condition="'$(Area)' == 'fastvectorhighlighter'" />
	  <Import Project="Highlighter/project.targets" Condition="'$(Area)' == 'highlighter'" />
	  <Import Project="Queries/project.targets" Condition="'$(Area)' == 'queries'" />
	  <Import Project="Regex/project.targets" Condition="'$(Area)' == 'regex'" />
	  <Import Project="Similarity/project.targets" Condition="'$(Area)' == 'similarity'" />
	  <Import Project="SimpleFacetedSearch/project.targets" Condition="'$(Area)' == 'simplefacetedsearch'" />
	  <Import Project="Snowball/project.targets" Condition="'$(Area)' == 'snowball'" />
	  <Import Project="Spatial/project.targets" Condition="'$(Area)' == 'spatial'" />
	  <Import Project="SpellChecker/project.targets" Condition="'$(Area)' == 'spellchecker'" />
	

	<ItemGroup Condition="'$(ArtifactsFolder)' != ''">
		<CleanFiles Include="$(ArtifactsFolder)\**\*.*" />
		<CleanFiles Include="$(RootFolder)\bin\**\*"  Exclude="$(RootFolder)\**\.svn\*; $(RootFolder)\.svn\*" />
	</ItemGroup>	
	
    <Target Name="diag">
        <Message Text="TempFolder=$(TempFolder)" />
        <Message Text="BuildFolder=$(BuildFolder)" />
        <Message Text="ScriptsFolder=$(ScriptsFolder)" />
        <Message Text="RootFolder=$(RootFolder)" />
        <Message Text="Area=$(Area)" />
        <Message Text="ArtifactsFolder=$(ArtifactsFolder)" />
    </Target>
    
	<Target Name="paths">
		<CallTarget Targets="@(PathsTarget)" />
	</Target>
	
  
	<Target Name="artifacts">
		<MakeDir Condition="!Exists('$(ArtifactsFolder)')" Directories="$(ArtifactsFolder)" />
	</Target>
	
	<Target Name="clean">
        <Error Condition="'$(ArtifactsFolder)' == ''" Text="ArtifactsFolder is empty!  'Area' may be empty or invalid." />
		<Message Text="Files To Clean: @(CleanFiles)" />
		<Delete Files="@(CleanFiles)" />
	</Target>
	
  
 	<Target Name="build">
 		<Message Text="External Constants$(ExternalConstants)" />
 		<CallTarget Targets="artifacts" />
 		<CallTarget Targets="paths" />
 		<Warning 
  	 		Condition="!Exists('$(MSBuildExtensionsPath32)\StyleCop\v4.5\StyleCop.targets')"
  	 		Text="StyleCop is not installed at its expected location: $(MSBuildExtensionsPath32)\StyleCop\v4.5\StyleCop.targets" />
 		<Message Text="Project Files: @(ProjectFiles)" />
		<MSBuild Projects="@(ProjectFiles)" Properties="Configuration=$(Configuration);ExternalConstants=$(ExternalConstants)" />
	</Target>
	
	<Target Name="copy-release">
		<MakeDir Condition="!Exists('$(RootFolder)\bin')" Directories="$(RootFolder)\bin" />
		<Copy SourceFiles="@(ReleaseFiles)" DestinationFolder="$(RootFolder)\bin" />
		<CallTarget Targets="@(CopyTargets)" />
	</Target>
	
	<Target Name="simple">
		<CallTarget Targets="clean;build;test-report-html;" />
	</Target>

	<Target Name="nightly">
		<CallTarget Targets="clean;build;test-report-html;package;copy-release" />
	</Target>
	
	<!-- 
	<Target Name="nightly">
		<CallTarget Targets="clean;build;coverage;rules;package;document;copy-release" />
	</Target> -->
  
	<Target Name="commit">
		<CallTarget Targets="clean;build;coverage;rules;" />
	</Target>
	
	
	<Import Condition="'$(NETFRAMEWORK)' != 'mono'" Project="dot-net-tools.targets" />
	<Import Condition="'$(NETFRAMEWORK)' == 'mono'" Project="mono-tools.targets" />
</Project>