<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ $(OS) is set to Unix/Windows_NT. This comes from an environment variable on Windows and MSBuild on Unix.
+ -->
+ <PropertyGroup>
+ <OsEnvironment Condition="'$(OsEnvironment)'=='' and '$(OS)'=='OSX'">Unix</OsEnvironment>
+ <OsEnvironment Condition="'$(OsEnvironment)'==''">$(OS)</OsEnvironment>
+ </PropertyGroup>
+
+ <!-- Build Tools Versions -->
+ <PropertyGroup>
+ <RoslynVersion>1.0.0-rc3-20150510-01</RoslynVersion>
+ <RoslynPackageName>Microsoft.Net.ToolsetCompilers</RoslynPackageName>
+ </PropertyGroup>
+
+ <!--
+ Switching to the .NET Core version of the BuildTools tasks seems to break numerous scenarios, such as VS intellisense and resource designer
+ as well as runnning the build on mono. Until we can get these sorted out we will continue using the .NET 4.5 version of the tasks.
+ -->
+ <PropertyGroup>
+ <BuildToolsTargets45>true</BuildToolsTargets45>
+ </PropertyGroup>
+
<!-- Common properties -->
<PropertyGroup>
<!-- Set basic properties and normalize -->
<BuildType Condition="'$(__BuildType)'==''">Debug</BuildType>
<BuildType Condition="'$(__BuildType)' == 'debug'">Debug</BuildType>
<BuildType Condition="'$(__BuildType)' == 'release'">Release</BuildType>
-
+ <BuildType Condition="'$(__BuildType)' == 'checked'">Checked</BuildType>
+
<BuildOS>$(__BuildOS)</BuildOS>
<BuildOS Condition="'$(__BuildOS)' == ''">Windows_NT</BuildOS>
<ProjectDir>$(__ProjectDir)\</ProjectDir>
- <ProjectDir Condition="'$(__ProjectDir)'==''">$(MSBuildThisFileDirectory)\</ProjectDir>
+ <ProjectDir Condition="'$(__ProjectDir)'==''">$(MSBuildThisFileDirectory)</ProjectDir>
<SourceDir>$(__SourceDir)\</SourceDir>
- <SourceDir Condition="'$(__SourceDir)'==''">$(ProjectDir)\src\</SourceDir>
+ <SourceDir Condition="'$(__SourceDir)'==''">$(ProjectDir)src\</SourceDir>
- <PackagesGlobalConfig>$(SourceDir).nuget\packages.config</PackagesGlobalConfig>
<PackagesDir>$(__PackagesDir)\</PackagesDir>
- <PackagesDir Condition="'$(__PackagesDir)'==''">$(ProjectDir)\packages\</PackagesDir>
+ <PackagesDir Condition="'$(__PackagesDir)'==''">$(ProjectDir)packages\</PackagesDir>
<RootBinDir>$(__RootBinDir)\</RootBinDir>
- <RootBinDir Condition="'$(__RootBinDir)'==''">$(ProjectDir)\bin\</RootBinDir>
+ <RootBinDir Condition="'$(__RootBinDir)'==''">$(ProjectDir)bin\</RootBinDir>
<BinDir>$(__BinDir)\</BinDir>
- <BinDir Condition="'$(__BinDir)'==''">$(RootBinDir)\Product\$(BuildOS).$(BuildArch).$(BuildType)\</BinDir>
+ <BinDir Condition="'$(__BinDir)'==''">$(RootBinDir)Product\$(BuildOS).$(BuildArch).$(BuildType)\</BinDir>
+
+ <IntermediateOutputRootPath Condition="'$(IntermediateOutputRootPath)' == ''">$(__IntermediatesDir)\</IntermediateOutputRootPath>
<!-- We don't append back slash because this path is used by nuget.exe as output directory and it
fails to write packages to it if the path contains the forward slash.
-->
<PackagesBinDir>$(__PackagesBinDir)</PackagesBinDir>
- <PackagesBinDir Condition="'$(__PackagesBinDir)'==''">$(BinDir)\.nuget</PackagesBinDir>
+ <PackagesBinDir Condition="'$(__PackagesBinDir)'==''">$(BinDir).nuget</PackagesBinDir>
+
+ <ToolsDir Condition="'$(ToolsDir)'==''">$(ProjectDir)Tools/</ToolsDir>
+ <DotnetCliPath Condition="'$(DotnetCliPath)'==''">$(ToolsDir)dotnetcli/bin/</DotnetCliPath>
+ <BuildToolsSemaphore Condition="'$(BuildToolsSemaphore)' == ''">$(ToolsDir)Microsoft.DotNet.Build.Tasks.dll</BuildToolsSemaphore>
+
+ <TestWorkingDir>$(__TestWorkingDir)\</TestWorkingDir>
+ <TestWorkingDir Condition="'$(__TestWorkingDir)'==''">$(RootBinDir)tests\$(BuildOS).$(BuildArch).$(BuildType)\</TestWorkingDir>
+ <BuildToolsTaskDir Condition="'$(BuildToolsTargets45)' == 'true'">$(ToolsDir)net45/</BuildToolsTaskDir>
- <ToolsDir>$(__ToolsDir)\</ToolsDir>
- <ToolsDir Condition="'$(__ToolsDir)'==''">$(RootBinDir)\tools\</ToolsDir>
+ </PropertyGroup>
- <TestWorkingDir>$(__TestWorkingDir)\</TestWorkingDir>
- <TestWorkingDir Condition="'$(__TestWorkingDir)'==''">$(RootBinDir)\tests\$(BuildOS).$(BuildArch).$(BuildType)\</TestWorkingDir>
+ <!-- Import Build tools common props file where repo-independent properties are found -->
+ <Import Condition="Exists('$(ToolsDir)Build.Common.props')" Project="$(ToolsDir)Build.Common.props" />
+
+
+ <!-- Common nuget properties -->
+ <PropertyGroup>
+ <NuGetToolPath Condition="'$(NuGetToolPath)'==''">$(PackagesDir)NuGet.exe</NuGetToolPath>
+ <NuGetConfigFile Condition="'$(NuGetConfigFile)'==''">$(SourceDir)NuGet.Config</NuGetConfigFile>
+ <NuGetConfigCommandLine>-ConfigFile "$(NuGetConfigFile)"</NuGetConfigCommandLine>
+
+ <NugetRestoreCommand>"$(NuGetToolPath)"</NugetRestoreCommand>
+ <NugetRestoreCommand>$(NugetRestoreCommand) install</NugetRestoreCommand>
+ <!-- Trim off the last slash so that nuget doesn't get confused and say there are illegal characters on
+ the path. -->
+ <NugetRestoreCommand>$(NugetRestoreCommand) -OutputDirectory "$(PackagesDir.TrimEnd('\\'))"</NugetRestoreCommand>
+ <NugetRestoreCommand>$(NugetRestoreCommand) $(NuGetConfigCommandLine)</NugetRestoreCommand>
+ <NugetRestoreCommand>$(NugetRestoreCommand) -Verbosity detailed</NugetRestoreCommand>
+ <NugetRestoreCommand Condition="'$(OsEnvironment)'=='Unix'">mono $(NuGetRestoreCommand)</NugetRestoreCommand>
</PropertyGroup>
+
+ <PropertyGroup>
+ <DotnetToolCommand Condition="'$(DotnetToolCommand)'=='' and '$(OsEnvironment)'!='Unix'">$(DotnetCliPath)dotnet.exe</DotnetToolCommand>
+ <DotnetToolCommand Condition="'$(DotnetToolCommand)'=='' and '$(OsEnvironment)'=='Unix'">$(DotnetCliPath)dotnet</DotnetToolCommand>
+ <DnuRestoreCommand>"$(DotnetToolCommand)"</DnuRestoreCommand>
+ <DnuRestoreCommand>$(DnuRestoreCommand) restore</DnuRestoreCommand>
+ <DnuRestoreCommand>$(DnuRestoreCommand) --packages "$(PackagesDir.TrimEnd('\\'))"</DnuRestoreCommand>
+ <DnuRestoreCommand Condition="'$(LockDependencies)' == 'true'">$(DnuRestoreCommand) --lock</DnuRestoreCommand>
+ </PropertyGroup>
+
<!-- Setup Nuget properties -->
<ItemGroup>
<NuSpecSrcs Include="$(SourceDir)\.nuget\Microsoft.DotNet.CoreCLR.nuspec" />
+ <NuSpecSrcs Include="$(SourceDir)\.nuget\toolchain.win7-x64.Microsoft.DotNet.RyuJit.nuspec" />
<NuSpecSrcs Condition="'$(Configuration)'=='Release'" Include="$(SourceDir)\.nuget\Microsoft.DotNet.CoreCLR.Development.nuspec" />
<NuSpecSrcs Condition="'$(Configuration)'=='Debug'" Include="$(SourceDir)\.nuget\Microsoft.DotNet.CoreCLR.Debug.Development.nuspec" />
</ItemGroup>
<ItemGroup>
<!-- Backslash appended, see note in dir.props about the PackagesBinDir property -->
<NuSpecs Include="$(PackagesBinDir)\Microsoft.DotNet.CoreCLR.nuspec" />
+ <NuSpecs Include="$(PackagesBinDir)\toolchain.win7-x64.Microsoft.DotNet.RyuJit.nuspec" />
<NuSpecs Condition="'$(Configuration)'=='Release'" Include="$(PackagesBinDir)\Microsoft.DotNet.CoreCLR.Development.nuspec" />
<NuSpecs Condition="'$(Configuration)'=='Debug'" Include="$(PackagesBinDir)\Microsoft.DotNet.CoreCLR.Debug.Development.nuspec" />
</ItemGroup>
- <!-- Setup common target properties that we use to conditionally include sources -->
+ <!--
+ Set up Roslyn predefines
+ -->
<PropertyGroup>
- <TargetsWindows Condition="'$(BuildOS)' == 'Windows_NT'">true</TargetsWindows>
- <TargetsLinux Condition="'$(BuildOS)' == 'Linux'">true</TargetsLinux>
- <TargetsOSX Condition="'$(BuildOS)' == 'OSX'">true</TargetsOSX>
-
- <TargetsUnix Condition="'$(TargetsLinux)' == 'true' or '$(TargetsOSX)' == 'true'">true</TargetsUnix>
- </PropertyGroup>
-
- <!-- Common NuGet properties -->
- <PropertyGroup>
- <NuGetToolPath>$(ToolsDir)NuGet.exe</NuGetToolPath>
- <NuGetConfigFile>$(SourceDir)NuGet.Config</NuGetConfigFile>
- <NuGetConfigCommandLine
- Condition="Exists('$(NuGetConfigFile)')">-ConfigFile "$(NuGetConfigFile)"</NuGetConfigCommandLine>
+ <RoslynPackageDir>$(PackagesDir)/$(RoslynPackageName).$(RoslynVersion)/</RoslynPackageDir>
+ <RoslynPropsFile>$(RoslynPackageDir)build/Microsoft.Net.ToolsetCompilers.props</RoslynPropsFile>
</PropertyGroup>
- <!-- Common build tool properties -->
+ <!-- Setup common target properties that we use to conditionally include sources -->
<PropertyGroup>
-
- <BuildToolsCoreCLRPackageName>Microsoft.DotNet.BuildTools.CoreCLR</BuildToolsCoreCLRPackageName>
- <BuildToolsCoreCLRVersion>1.0.1-prerelease</BuildToolsCoreCLRVersion>
- <BuildToolsCoreCLRInstallSempahore>$(ToolsDir)BuildTools.$(BuildToolsCoreCLRVersion).installed.semaphore</BuildToolsCoreCLRInstallSempahore>
-
- <BuildToolsPackageName>Microsoft.DotNet.BuildTools</BuildToolsPackageName>
- <BuildToolsVersion>1.0.25-prerelease-00009</BuildToolsVersion>
-
- <BuildToolsCoreCLRTargetInputs>$(MSBuildThisFileFullPath);$(MSBuildThisFileDirectory)build.proj</BuildToolsCoreCLRTargetInputs>
- <BuildToolsCoreCLRTargetOutputs>$(BuildToolsCoreCLRInstallSempahore)</BuildToolsCoreCLRTargetOutputs>
-
- <BuildToolsCoreCLRLocation>$(ToolsDir)\$(BuildToolsCoreCLRPackageName).$(BuildToolsCoreCLRVersion)</BuildToolsCoreCLRLocation>
- <BuildToolsLocation>$(ToolsDir)\$(BuildToolsPackageName).$(BuildToolsVersion)</BuildToolsLocation>
+ <TargetsFreeBSD Condition="'$(BuildOS)' == 'FreeBSD'">true</TargetsFreeBSD>
+ <TargetsLinux Condition="'$(BuildOS)' == 'Linux'">true</TargetsLinux>
+ <TargetsOSX Condition="'$(BuildOS)' == 'OSX'">true</TargetsOSX>
+ <TargetsWindows Condition="'$(BuildOS)' == 'Windows_NT'">true</TargetsWindows>
+
+ <TargetsUnix Condition="'$(TargetsFreeBSD)' == 'true' or '$(TargetsLinux)' == 'true' or '$(TargetsOSX)' == 'true'">true</TargetsUnix>
</PropertyGroup>
-</Project>
\ No newline at end of file
+</Project>