зеркало из https://github.com/mono/corefx.git
154 строки
9.8 KiB
XML
154 строки
9.8 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project ToolsVersion="14.0" InitialTargets="CheckForBuildTools" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
|
|
<Target Name="CheckForBuildTools">
|
|
<Error Condition="!Exists('$(ToolsDir)') and '$(OverrideToolsDir)'=='true'"
|
|
Text="The tools directory [$(ToolsDir)] does not exist. Please run sync in your repo to ensure the tools are installed before attempting to build an individual project." />
|
|
<Error Condition="!Exists('$(ToolsDir)') and '$(OverrideToolsDir)'!='true'"
|
|
Text="The tools directory [$(ToolsDir)] does not exist. Please run init-tools.cmd in your repo to ensure the tools are installed before attempting to build an individual project." />
|
|
</Target>
|
|
|
|
<Import Project="buildvertical.targets" />
|
|
|
|
<!-- Corefx-specific binplacing properties -->
|
|
<PropertyGroup>
|
|
<IsRuntimeAssembly Condition="'$(IsRuntimeAssembly)'=='' AND '$(IsReferenceAssembly)' != 'true' AND '$(BinPlaceRef)' != 'true' AND '$(IsTestProject)' != 'true'">true</IsRuntimeAssembly>
|
|
<!-- Try to determine if this is a simple library without a ref project.
|
|
https://github.com/dotnet/corefx/issues/14291 is tracking cleaning this up -->
|
|
<IsRuntimeAndReferenceAssembly Condition="'$(IsRuntimeAndReferenceAssembly)' == '' and '$(IsRuntimeAssembly)' == 'true' and Exists('$(SourceDir)/$(MSBuildProjectName)') and !Exists('$(SourceDir)/$(MSBuildProjectName)/ref') and !$(MSBuildProjectName.StartsWith('System.Private'))">true</IsRuntimeAndReferenceAssembly>
|
|
<IsNETCoreAppRef Condition="'$(IsNETCoreAppRef)' == ''">$(IsNETCoreApp)</IsNETCoreAppRef>
|
|
<IsUAPRef Condition="'$(IsUAPRef)' == ''">$(IsUAP)</IsUAPRef>
|
|
<IsNetFxNETStandardRef Condition="'$(IsNetFxNETStandardRef)' == ''">$(IsNetFxNETStandard)</IsNetFxNETStandardRef>
|
|
|
|
<BinPlaceRef Condition="'$(BinPlaceRef)' == '' And ('$(IsReferenceAssembly)' == 'true' OR '$(IsRuntimeAndReferenceAssembly)' == 'true')">true</BinPlaceRef>
|
|
<BinPlaceRuntime Condition="'$(BinPlaceRuntime)' == '' And ('$(IsRuntimeAssembly)' == 'true' OR '$(IsRuntimeAndReferenceAssembly)' == 'true')">true</BinPlaceRuntime>
|
|
<BinPlaceTest Condition="'$(BinPlaceTest)' == '' And '$(IsTestProject)' == 'true'">true</BinPlaceTest>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup Condition="'@(BinPlaceConfiguration)' == ''">
|
|
<!-- binplace to directories for the target vertical -->
|
|
<BinPlaceConfiguration Include="$(_bc_TargetGroup)-$(_bc_OSGroup)">
|
|
<RefPath>$(BuildConfigurationRefPath)</RefPath>
|
|
<RuntimePath>$(RuntimePath)</RuntimePath>
|
|
<!-- we want to bin place the test output into the working directory -->
|
|
<TestPath>$(TestPath)</TestPath>
|
|
</BinPlaceConfiguration>
|
|
<!-- binplace to directories for packages -->
|
|
<BinPlaceConfiguration Condition="'$(IsNETCoreApp)' == 'true' AND '$(BuildingNETCoreAppVertical)' == 'true'" Include="netcoreapp-$(_bc_OSGroup)">
|
|
<PackageFileRefPath Condition="'$(IsNETCoreAppRef)' == 'true'">$(NETCoreAppPackageRefPath)</PackageFileRefPath>
|
|
<PackageFileRuntimePath>$(NETCoreAppPackageRuntimePath)</PackageFileRuntimePath>
|
|
<RuntimePath Condition="'$(BinPlaceNETCoreAppPackage)' == 'true'">$(NETCoreAppPackageRuntimePath)\..\runtime</RuntimePath>
|
|
<RefPath Condition="'$(BinPlaceNETCoreAppPackage)' == 'true' AND '$(IsNETCoreAppRef)' == 'true'">$(RefRootPath)microsoft.netcore.app</RefPath>
|
|
<!-- enable trimming for any runtime project that's part of the shared framework and hasn't already set ILLinkTrimAssembly -->
|
|
<SetProperties Condition="'$(BinPlaceRuntime)' == 'true' AND '$(ILLinkTrimAssembly)' == ''">ILLinkTrimAssembly=true</SetProperties>
|
|
</BinPlaceConfiguration>
|
|
<BinPlaceConfiguration Condition="'$(IsUAPRef)'=='true' AND ('$(BuildingUAPVertical)' == 'true' OR '$(BuildingUAPAOTVertical)' == 'true')" Include="uap-$(_bc_OSGroup)">
|
|
<PackageFileRefPath>$(UAPPackageRefPath)</PackageFileRefPath>
|
|
</BinPlaceConfiguration>
|
|
<BinPlaceConfiguration Condition="'$(IsUAP)' == 'true' AND '$(BuildingUAPVertical)' == 'true'" Include="uap-$(_bc_OSGroup)">
|
|
<PackageFileRuntimePath>$(UAPPackageRuntimePath)</PackageFileRuntimePath>
|
|
</BinPlaceConfiguration>
|
|
<BinPlaceConfiguration Condition="'$(IsUAP)' == 'true' AND '$(BuildingUAPAOTVertical)' == 'true'" Include="uapaot-$(_bc_OSGroup)">
|
|
<PackageFileRuntimePath>$(UAPAOTPackageRuntimePath)</PackageFileRuntimePath>
|
|
</BinPlaceConfiguration>
|
|
|
|
<!-- Setup the shared framework directory for testing -->
|
|
<BinPlaceConfiguration Condition="'$(BinPlaceTestSharedFramework)' == 'true'" Include="netcoreapp-$(_bc_OSGroup)">
|
|
<RuntimePath>$(NETCoreAppTestSharedFrameworkPath)</RuntimePath>
|
|
</BinPlaceConfiguration>
|
|
<!-- Setup the ILCInputFolder directory for testing uapaot -->
|
|
<BinPlaceConfiguration Condition="'$(BinPlaceILCInputFolder)' == 'true'" Include="uapaot-$(_bc_OSGroup)">
|
|
<RuntimePath>$(ILCFXInputFolder)</RuntimePath>
|
|
</BinPlaceConfiguration>
|
|
<!-- And the UAP folder for the F5 (CoreCLR UAP-debugging) scenario -->
|
|
<BinPlaceConfiguration Condition="'$(BinPlaceUAPFramework)' == 'true'" Include="uap-$(_bc_OSGroup)">
|
|
<RuntimePath>$(UAPTestSharedFrameworkPath)</RuntimePath>
|
|
</BinPlaceConfiguration>
|
|
<BinPlaceConfiguration Condition="'$(BinPlaceNETFXRuntime)' == 'true'" Include="netfx-$(_bc_OSGroup)">
|
|
<RuntimePath>$(TestHostRootPath)</RuntimePath>
|
|
</BinPlaceConfiguration>
|
|
|
|
<!-- binplace targeting packs which may be different from BuildConfiguration -->
|
|
<BinPlaceConfiguration Include="netstandard">
|
|
<RefPath>$(RefRootPath)netstandard/</RefPath>
|
|
</BinPlaceConfiguration>
|
|
<!-- some libraries that produce packages will remain targeting netcoreapp2.0 -->
|
|
<BinPlaceConfiguration Condition="'$(BuildingNETCoreAppVertical)' == 'true'" Include="netcoreapp2.0">
|
|
<RefPath>$(RefRootPath)netcoreapp2.0/</RefPath>
|
|
</BinPlaceConfiguration>
|
|
<BinPlaceConfiguration Include="netcoreapp2.0-Windows_NT">
|
|
<RuntimePath>$(ShimsTargetRuntimeRoot)netcoreapp2.0/</RuntimePath>
|
|
</BinPlaceConfiguration>
|
|
<!-- some libraries that produce packages will remain targeting uap10.0.16299 -->
|
|
<BinPlaceConfiguration Condition="'$(BuildingUAPVertical)' == 'true' OR '$(BuildingUAPAOTVertical)' == 'true'" Include="uap10.0.16299">
|
|
<RefPath>$(RefRootPath)uap10.0.16299/</RefPath>
|
|
</BinPlaceConfiguration>
|
|
<!-- for BuildAllConfigurations make sure all refpaths are created. -->
|
|
<_TargetGroupsWithIsAot Condition="'$(BuildAllConfigurations)' == 'true'" Include="@(TargetGroups)">
|
|
<IsAot>$([System.String]::new('%(Identity)').Contains('aot'))</IsAot>
|
|
</_TargetGroupsWithIsAot>
|
|
<BinPlaceConfiguration Condition="'$(BuildAllConfigurations)' == 'true'"
|
|
Include="@(_TargetGroupsWithIsAot->WithMetadataValue('IsAot', 'false'))">
|
|
<RefPath>$(RefRootPath)%(Identity)/</RefPath>
|
|
</BinPlaceConfiguration>
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup Condition="'$(BlockStable)' == 'true'">
|
|
<!--
|
|
If BlockStable is set to true then always include the label and build number in the package version.
|
|
This needs to be set before we import packaging.targets which comes in the Build.Common.targets.
|
|
-->
|
|
<IncludePreReleaseLabelInPackageVersion>true</IncludePreReleaseLabelInPackageVersion>
|
|
<IncludeBuildNumberInPackageVersion>true</IncludeBuildNumberInPackageVersion>
|
|
</PropertyGroup>
|
|
|
|
<Import Project="$(ToolsDir)/Build.Common.targets" Condition="Exists('$(ToolsDir)/Build.Common.targets')" />
|
|
|
|
<!-- permit a wrapping build system to contribute targets to this build -->
|
|
<Import Condition="Exists('$(MSBuildThisFileDirectory)..\open.targets')" Project="$(MSBuildThisFileDirectory)..\open.targets" />
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)referenceFromRuntime.targets" />
|
|
<Import Project="$(MSBuildThisFileDirectory)illink.targets" />
|
|
|
|
<ItemGroup Condition="'$(NuGetTargetMoniker)'=='.NETStandard,Version=v1.7'">
|
|
<!-- Temporarily suppress the message until we get a nuget version that knows about the mapping between netstandard1.7 and uapvNext -->
|
|
<SuppressPackageTargetFrameworkCompatibility Include="$(UAPvNextTFM)" />
|
|
</ItemGroup>
|
|
|
|
<Target Name="ProducesPackageId"
|
|
Returns="@(PackageIds)">
|
|
<ItemGroup>
|
|
<PackageIds Include="$(Id)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="ReportConfigurationErrorMessage"
|
|
BeforeTargets="AssignProjectConfiguration"
|
|
Condition="'$(BuildConfigurations)' != ''" >
|
|
<Message Importance="Low" Text="$(MSBuildProjectFullPath), C: $(Configuration) BC: $(BuildConfiguration) BCs: $(BuildConfigurations)" />
|
|
<Message Importance="High" Condition="'$(ConfigurationErrorMsg)' != ''" Text="$(MSBuildProjectFullPath) ConfigurationErrorMessage: $(ConfigurationErrorMsg)" />
|
|
</Target>
|
|
|
|
<Target Name="GenerateReferenceSource">
|
|
<PropertyGroup>
|
|
<_GenApiExePath>$(ToolsDir)GenApi.exe</_GenApiExePath>
|
|
<_RefSourceFileOutputPath>$(MSBuildProjectDirectory)/../ref/$(AssemblyName).cs</_RefSourceFileOutputPath>
|
|
<_ExcludeAPIList>$(MSBuildThisFileDirectory)tools-local/DefaultGenApiDocIds.txt</_ExcludeAPIList>
|
|
<_LicenseHeaderTxtPath>$(MSBuildThisFileDirectory)tools-local/LicenseHeader.txt</_LicenseHeaderTxtPath>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<_GenAPICmd>$(DotnetToolCommand) $(_GenApiExePath)</_GenAPICmd>
|
|
<_GenAPICmd>$(_GenAPICmd) -assembly:@(IntermediateAssembly)</_GenAPICmd>
|
|
<_GenAPICmd>$(_GenAPICmd) -libPath:$(RefPath)</_GenAPICmd>
|
|
<_GenAPICmd>$(_GenAPICmd) -out:$(_RefSourceFileOutputPath)</_GenAPICmd>
|
|
<_GenAPICmd>$(_GenAPICmd) -excludeAttributesList:$(_ExcludeAPIList)</_GenAPICmd>
|
|
<_GenAPICmd>$(_GenAPICmd) -headerFile:$(_LicenseHeaderTxtPath)</_GenAPICmd>
|
|
</PropertyGroup>
|
|
|
|
<Exec Command="$(_GenAPICmd)" />
|
|
<Message Text="Generated reference assembly source code: $(_RefSourceFileOutputPath)" />
|
|
</Target>
|
|
|
|
</Project>
|