269 строки
12 KiB
XML
269 строки
12 KiB
XML
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<Import Condition="Exists('..\dir.props') And '$(RepoLocalBuild)'!='true'" Project="..\dir.props" />
|
|
|
|
<!--
|
|
$(OS) is set to Unix/Windows_NT. This comes from an environment variable on Windows and MSBuild on Unix.
|
|
-->
|
|
<PropertyGroup>
|
|
<OsEnvironment Condition="'$(OsEnvironment)'==''">$(OS)</OsEnvironment>
|
|
</PropertyGroup>
|
|
|
|
<!-- Initialize the basic BuildOS, BuildType, BuildConfig from build script, if present -->
|
|
<PropertyGroup>
|
|
<OSGroup Condition="'$(OSGroup)'==''">$(__BuildOS)</OSGroup>
|
|
<Platform Condition="'$(Platform)'==''">$(__BuildArch)</Platform>
|
|
<Configuration Condition="'$(Configuration)'==''">$(__BuildType)</Configuration>
|
|
</PropertyGroup>
|
|
|
|
<!--
|
|
Projects that have no OS-specific implementations just use Debug and Release for $(Configuration).
|
|
Projects that do have OS-specific implementations use OS_Debug and OS_Release, for all OS's we support even
|
|
if the code is the same between some OS's (so if you have some project that just calls POSIX APIs, we still have
|
|
OSX_[Debug|Release] and Linux_[Debug|Release] configurations. We do this so that we place all the output under
|
|
a single binary folder and can have a similar experience between the command line and Visual Studio.
|
|
|
|
Since now have multiple *Debug and *Release configurations, ConfigurationGroup is set to Debug for any of the
|
|
debug configurations, and to Release for any of the release configurations.
|
|
-->
|
|
|
|
<!-- Set default Configuration and Platform -->
|
|
<PropertyGroup>
|
|
<Platform Condition="'$(Platform)'==''">AnyCPU</Platform>
|
|
|
|
<Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
|
|
<ConfigurationGroup Condition="$(Configuration.EndsWith('Debug'))">Debug</ConfigurationGroup>
|
|
<ConfigurationGroup Condition="$(Configuration.EndsWith('Release'))">Release</ConfigurationGroup>
|
|
<ConfigurationGroup Condition="'$(ConfigurationGroup)'==''">$(Configuration)</ConfigurationGroup>
|
|
|
|
<OSGroup Condition="'$(OSGroup)'=='' and $(Configuration.StartsWith('Windows'))">Windows_NT</OSGroup>
|
|
<OSGroup Condition="'$(OSGroup)'=='' and $(Configuration.StartsWith('Linux'))">Linux</OSGroup>
|
|
<OSGroup Condition="'$(OSGroup)'=='' and $(Configuration.StartsWith('OSX'))">OSX</OSGroup>
|
|
<OSGroup Condition="'$(OSGroup)'=='' and $(Configuration.StartsWith('FreeBSD'))">FreeBSD</OSGroup>
|
|
<OSGroup Condition="'$(OSGroup)'==''">Windows_NT</OSGroup>
|
|
</PropertyGroup>
|
|
|
|
<!-- Initialize the binplace-specific BuildOS, BuildType, BuildConfig from what we have computed by now -->
|
|
<PropertyGroup>
|
|
<BinDirOSGroup Condition="'$(BinDirOSGroup)'==''">$(OSGroup)</BinDirOSGroup>
|
|
<BinDirConfiguration Condition="'$(BinDirConfiguration)'==''">$(ConfigurationGroup)</BinDirConfiguration>
|
|
<BinDirPlatform Condition="'$(BinDirPlatform)'==''">$(Platform)</BinDirPlatform>
|
|
<BinDirPlatform Condition="'$(BinDirPlatform)'=='AnyCPU' or '$(BinDirPlatform)'=='amd64'">x64</BinDirPlatform>
|
|
</PropertyGroup>
|
|
|
|
<!-- Common repo directories -->
|
|
<PropertyGroup>
|
|
<ProjectDir>$(MSBuildThisFileDirectory)</ProjectDir>
|
|
<SourceDir>$(ProjectDir)src/</SourceDir>
|
|
|
|
<!-- Output directories -->
|
|
<BinDir Condition="'$(BinDir)'==''">$(ProjectDir)bin/</BinDir>
|
|
<ObjDir Condition="'$(ObjDir)'==''">$(BinDir)obj/</ObjDir>
|
|
<BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)'==''">$(ObjDir)</BaseIntermediateOutputPath>
|
|
<PackageOutputRoot Condition="'$(PackageOutputRoot)'=='' and '$(NonShippingPackage)' == 'true'">$(BinDir)packages_noship/</PackageOutputRoot>
|
|
<PackageOutputRoot Condition="'$(PackageOutputRoot)'==''">$(BinDir)packages/</PackageOutputRoot>
|
|
|
|
<!-- Input Directories -->
|
|
<PackagesDir Condition="'$(PackagesDir)'==''">$(ProjectDir)packages/</PackagesDir>
|
|
<RestorePackagesPath>$(PackagesDir)</RestorePackagesPath>
|
|
|
|
<ToolsDir Condition="'$(ToolsDir)'==''">$(ProjectDir)Tools/</ToolsDir>
|
|
</PropertyGroup>
|
|
|
|
<!-- Import Build tools common props file where repo-independent properties are found -->
|
|
<Import Project="$(ToolsDir)Build.Common.props" Condition="Exists('$(ToolsDir)Build.Common.props')" />
|
|
|
|
<!-- Provides package dependency version properties and verification/auto-upgrade configuration -->
|
|
<Import Project="$(MSBuildThisFileDirectory)dependencies.props" />
|
|
|
|
<PropertyGroup>
|
|
<!-- Default any assembly not specifying a key to use the Open Key -->
|
|
<AssemblyKey>Open</AssemblyKey>
|
|
</PropertyGroup>
|
|
|
|
<!-- Import the packaging props -->
|
|
<Import Project="$(MSBuildThisFileDirectory)Packaging.props" />
|
|
|
|
<!-- Set up Default symbol and optimization for Configuration -->
|
|
<PropertyGroup Condition="'$(ConfigurationGroup)' == 'Debug'">
|
|
<DebugSymbols Condition="'$(DebugSymbols)' == ''">true</DebugSymbols>
|
|
<Optimize Condition="'$(Optimize)' == ''">false</Optimize>
|
|
<DebugType Condition="'$(DebugType)' == ''">full</DebugType>
|
|
<DefineConstants>DEBUG;TRACE;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(ConfigurationGroup)' == 'Release'">
|
|
<DebugSymbols Condition="'$(DebugSymbols)' == ''">true</DebugSymbols>
|
|
<Optimize Condition="'$(Optimize)' == ''">true</Optimize>
|
|
<DebugType Condition="'$(DebugType)' == ''">pdbonly</DebugType>
|
|
<DefineConstants>TRACE;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
|
|
<!-- Disable some standard properties for building our projects -->
|
|
<PropertyGroup>
|
|
<NoStdLib>true</NoStdLib>
|
|
<NoExplicitReferenceToStdLib>true</NoExplicitReferenceToStdLib>
|
|
<AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
|
|
<GenerateTargetFrameworkAttribute>false</GenerateTargetFrameworkAttribute>
|
|
<LangVersion>latest</LangVersion>
|
|
<DebugType Condition="'$(IsProjectNLibrary)' != 'true'">portable</DebugType>
|
|
</PropertyGroup>
|
|
|
|
<!-- Set up handling of build warnings -->
|
|
<PropertyGroup>
|
|
<WarningLevel>4</WarningLevel>
|
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
|
</PropertyGroup>
|
|
|
|
<!-- Set up some common paths -->
|
|
<PropertyGroup>
|
|
<CommonPath>$(SourceDir)Common\src</CommonPath>
|
|
<CommonTestPath>$(SourceDir)Common\tests</CommonTestPath>
|
|
</PropertyGroup>
|
|
|
|
<!-- Set up the default output and intermediate paths -->
|
|
<PropertyGroup>
|
|
<OSPlatformConfig>$(BinDirOSGroup).$(BinDirPlatform).$(BinDirConfiguration)</OSPlatformConfig>
|
|
|
|
<BaseOutputPath Condition="'$(BaseOutputPath)'==''">$(BinDir)</BaseOutputPath>
|
|
|
|
<OutputPath Condition="'$(OutputPath)'==''">$(BaseOutputPath)$(OSPlatformConfig)/$(MSBuildProjectName)</OutputPath>
|
|
|
|
<IntermediateOutputRootPath Condition="'$(IntermediateOutputRootPath)' == ''">$(BaseIntermediateOutputPath)$(OSPlatformConfig)/</IntermediateOutputRootPath>
|
|
<IntermediateOutputPath Condition="'$(IntermediateOutputPath)' == ''">$(IntermediateOutputRootPath)$(MSBuildProjectName)</IntermediateOutputPath>
|
|
|
|
<RuntimePath Condition="'$(RuntimePath)' == ''">$(IntermediateOutputRootPath)test-runtime/</RuntimePath>
|
|
|
|
<!-- Use the shared tools host and runtime for testing -->
|
|
<TestHostRootPath Condition="'$(TestHostRootPath)' == ''">$(DotnetCliPath)</TestHostRootPath>
|
|
|
|
<PackageOutputPath Condition="'$(PackageOutputPath)'==''">$(PackageOutputRoot)$(BinDirConfiguration)/</PackageOutputPath>
|
|
<SymbolPackageOutputPath Condition="'$(SymbolPackageOutputPath)'==''">$(PackageOutputPath)symbols/</SymbolPackageOutputPath>
|
|
|
|
<!-- Folder where we will drop the Nuget package for the toolchain -->
|
|
<ProductPackageDir Condition="'$(ProductPackageDir)'==''">$(BaseOutputPath)$(OSPlatformConfig)/packaging/</ProductPackageDir>
|
|
|
|
<RestoreOutputPath Condition="'$(RestoreOutputPath)'==''">$(IntermediateOutputPath)</RestoreOutputPath>
|
|
|
|
<AotPackageReferencePath Condition="'$(AotPackageReferencePath)'==''">$(IntermediateOutputRootPath)\AotPackageReference</AotPackageReferencePath>
|
|
|
|
<PackagesBasePath Condition="'$(PackagesBasePath)'==''">$(BinDir)$(OSPlatformConfig)</PackagesBasePath>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup>
|
|
<SupplementalTestData Include="$(RuntimePath)*.dll" />
|
|
</ItemGroup>
|
|
|
|
<!-- initialize all the targets variables to false as they should only be set below -->
|
|
<PropertyGroup>
|
|
<TargetsWindows>false</TargetsWindows>
|
|
<TargetsUnix>false</TargetsUnix>
|
|
<TargetsLinux>false</TargetsLinux>
|
|
<TargetsOSX>false</TargetsOSX>
|
|
<TargetsFreeBSD>false</TargetsFreeBSD>
|
|
<TargetsNetBSD>false</TargetsNetBSD>
|
|
</PropertyGroup>
|
|
|
|
<!-- Setup properties per OSGroup -->
|
|
<Choose>
|
|
<When Condition="'$(OSGroup)'=='AnyOS'">
|
|
<PropertyGroup>
|
|
</PropertyGroup>
|
|
</When>
|
|
<When Condition="'$(OSGroup)'=='Windows_NT'">
|
|
<PropertyGroup>
|
|
<TargetsWindows>true</TargetsWindows>
|
|
<PackageTargetRuntime>win-corert</PackageTargetRuntime>
|
|
</PropertyGroup>
|
|
</When>
|
|
<When Condition="'$(Platform)'=='wasm'">
|
|
<PropertyGroup>
|
|
<TargetsUnix>true</TargetsUnix>
|
|
<TargetsWindows>false</TargetsWindows>
|
|
<PackageTargetRuntime>unix-corert</PackageTargetRuntime>
|
|
</PropertyGroup>
|
|
</When>
|
|
<When Condition="'$(OSGroup)'=='Unix'">
|
|
<PropertyGroup>
|
|
<TargetsUnix>true</TargetsUnix>
|
|
<PackageTargetRuntime>unix-corert</PackageTargetRuntime>
|
|
</PropertyGroup>
|
|
</When>
|
|
<When Condition="'$(OSGroup)'=='Linux'">
|
|
<PropertyGroup>
|
|
<TargetsUnix>true</TargetsUnix>
|
|
<TargetsLinux>true</TargetsLinux>
|
|
<PackageTargetRuntime>linux-corert</PackageTargetRuntime>
|
|
</PropertyGroup>
|
|
</When>
|
|
<When Condition="'$(OSGroup)'=='OSX'">
|
|
<PropertyGroup>
|
|
<TargetsUnix>true</TargetsUnix>
|
|
<TargetsOSX>true</TargetsOSX>
|
|
<PackageTargetRuntime>osx-corert</PackageTargetRuntime>
|
|
</PropertyGroup>
|
|
</When>
|
|
<When Condition="'$(OSGroup)'=='FreeBSD'">
|
|
<PropertyGroup>
|
|
<TargetsUnix>true</TargetsUnix>
|
|
<TargetsFreeBSD>true</TargetsFreeBSD>
|
|
</PropertyGroup>
|
|
</When>
|
|
<When Condition="'$(OSGroup)'=='NetBSD'">
|
|
<PropertyGroup>
|
|
<TargetsUnix>true</TargetsUnix>
|
|
<TargetsNetBSD>true</TargetsNetBSD>
|
|
</PropertyGroup>
|
|
</When>
|
|
<Otherwise>
|
|
<PropertyGroup>
|
|
<ConfigurationErrorMsg>$(ConfigurationErrorMsg);Unknown OSGroup [$(OSGroup)] specificed in your project.</ConfigurationErrorMsg>
|
|
</PropertyGroup>
|
|
</Otherwise>
|
|
</Choose>
|
|
|
|
<!-- Set up various other constants -->
|
|
<PropertyGroup>
|
|
<DefineConstants>CORERT;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(TargetsWindows)'=='true'">
|
|
<DefineConstants>PLATFORM_WINDOWS;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(TargetsUnix)'=='true'">
|
|
<DefineConstants>PLATFORM_UNIX;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(TargetsOSX)'=='true'">
|
|
<DefineConstants>PLATFORM_OSX;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Platform)' == 'x64'">
|
|
<DefineConstants>AMD64;BIT64;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Platform)' == 'x86'">
|
|
<DefineConstants>X86;BIT32;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Platform)' == 'arm'">
|
|
<DefineConstants>ARM;BIT32;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Platform)' == 'armel'">
|
|
<DefineConstants>ARM;BIT32;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Platform)' == 'arm64'">
|
|
<DefineConstants>ARM64;BIT64;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Platform)' == 'wasm'">
|
|
<DefineConstants>WASM;BIT32;$(DefineConstants)</DefineConstants>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<PrereleaseResolveNuGetPackages>true</PrereleaseResolveNuGetPackages>
|
|
<NuGetTargetMoniker Condition="'$(NuGetTargetFramework)' == ''">.NETCoreApp,Version=v2.0</NuGetTargetMoniker>
|
|
<BuildPackageLibraryReferences>false</BuildPackageLibraryReferences>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<!-- Don't run tests if we're building another platform's binaries on Windows -->
|
|
<SkipTests Condition="'$(SkipTests)'=='' and ('$(OsEnvironment)'=='Windows_NT' and '$(TargetsWindows)'!='true')">true</SkipTests>
|
|
</PropertyGroup>
|
|
|
|
<!-- Use Roslyn Compilers to build -->
|
|
<Import Project="$(RoslynPropsFile)" Condition="Exists('$(RoslynPropsFile)')" />
|
|
</Project>
|