Initial commit
This commit is contained in:
147
FWA_MAIN/bin/roslyn/Microsoft.Managed.Core.targets
Normal file
147
FWA_MAIN/bin/roslyn/Microsoft.Managed.Core.targets
Normal file
@@ -0,0 +1,147 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. -->
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<!--
|
||||
Common targets for managed compilers.
|
||||
-->
|
||||
<UsingTask TaskName="Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots" AssemblyFile="$(MSBuildThisFileDirectory)Microsoft.Build.Tasks.CodeAnalysis.dll" />
|
||||
|
||||
<Target Name="ShimReferencePathsWhenCommonTargetsDoesNotUnderstandReferenceAssemblies"
|
||||
BeforeTargets="CoreCompile"
|
||||
Condition="'@(ReferencePathWithRefAssemblies)' == ''">
|
||||
<!-- Common targets should populate this item from dev15.3, but this file
|
||||
may be used (via NuGet package) on earlier MSBuilds. If the
|
||||
adjusted-for-reference-assemblies item is not populated, just use
|
||||
the older item's contents. -->
|
||||
<ItemGroup>
|
||||
<ReferencePathWithRefAssemblies Include="@(ReferencePath)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="_BeforeVBCSCoreCompile">
|
||||
<ItemGroup Condition="'$(TargetingClr2Framework)' == 'true'">
|
||||
<ReferencePathWithRefAssemblies>
|
||||
<EmbedInteropTypes />
|
||||
</ReferencePathWithRefAssemblies>
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Prefer32Bit was introduced in .NET 4.5. Set it to false if we are targeting 4.0 -->
|
||||
<PropertyGroup Condition="('$(TargetFrameworkVersion)' == 'v4.0')">
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
</PropertyGroup>
|
||||
|
||||
<!-- TODO: Remove this ItemGroup once it has been moved to "_GenerateCompileInputs" target in Microsoft.Common.CurrentVersion.targets.
|
||||
https://github.com/dotnet/roslyn/issues/12223 -->
|
||||
<ItemGroup Condition="('$(AdditionalFileItemNames)' != '')">
|
||||
<AdditionalFileItems Include="$(AdditionalFileItemNames)" />
|
||||
<AdditionalFiles Include="@(%(AdditionalFileItems.Identity))" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(UseSharedCompilation)' == ''">
|
||||
<UseSharedCompilation>true</UseSharedCompilation>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
========================
|
||||
DeterministicSourcePaths
|
||||
========================
|
||||
|
||||
Unless specified otherwise enable deterministic source root (PathMap) when building deterministically on CI server, but not for local builds.
|
||||
In order for the debugger to find source files when debugging a locally built binary the PDB must contain original, unmapped local paths.
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<DeterministicSourcePaths Condition="'$(DeterministicSourcePaths)' == '' and '$(Deterministic)' == 'true' and '$(ContinuousIntegrationBuild)' == 'true'">true</DeterministicSourcePaths>
|
||||
</PropertyGroup>
|
||||
|
||||
<!--
|
||||
==========
|
||||
SourceRoot
|
||||
==========
|
||||
|
||||
All source files of the project are expected to be located under one of the directories specified by SourceRoot item group.
|
||||
This target collects all SourceRoots from various sources.
|
||||
|
||||
This target calculates final local path for each SourceRoot and sets SourceRoot.MappedPath metadata accordingly.
|
||||
The final path is a path with deterministic prefix when DeterministicSourcePaths is true, and the original path otherwise.
|
||||
In addition, the target validates and deduplicates the SourceRoot items.
|
||||
|
||||
InitializeSourceControlInformation is an msbuild target that ensures the SourceRoot items are populated from source control.
|
||||
The target is available only if SourceControlInformationFeatureSupported is true.
|
||||
|
||||
A consumer of SourceRoot.MappedPath metadata, such as Source Link generator, shall depend on this target.
|
||||
-->
|
||||
|
||||
<Target Name="InitializeSourceRootMappedPaths"
|
||||
DependsOnTargets="_InitializeSourceRootMappedPathsFromSourceControl">
|
||||
|
||||
<ItemGroup Condition="'@(_MappedSourceRoot)' != ''">
|
||||
<_MappedSourceRoot Remove="@(_MappedSourceRoot)" />
|
||||
</ItemGroup>
|
||||
|
||||
<Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots SourceRoots="@(SourceRoot)" Deterministic="$(DeterministicSourcePaths)">
|
||||
<Output TaskParameter="MappedSourceRoots" ItemName="_MappedSourceRoot" />
|
||||
</Microsoft.CodeAnalysis.BuildTasks.MapSourceRoots>
|
||||
|
||||
<ItemGroup>
|
||||
<SourceRoot Remove="@(SourceRoot)" />
|
||||
<SourceRoot Include="@(_MappedSourceRoot)" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
Declare that target InitializeSourceRootMappedPaths that populates MappedPaths metadata on SourceRoot items is available.
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<SourceRootMappedPathsFeatureSupported>true</SourceRootMappedPathsFeatureSupported>
|
||||
</PropertyGroup>
|
||||
|
||||
<!--
|
||||
If InitializeSourceControlInformation target isn't supported, we just continue without invoking that synchronization target.
|
||||
We'll proceed with SourceRoot (and other source control properties) provided by the user (or blank).
|
||||
-->
|
||||
<Target Name="_InitializeSourceRootMappedPathsFromSourceControl"
|
||||
DependsOnTargets="InitializeSourceControlInformation"
|
||||
Condition="'$(SourceControlInformationFeatureSupported)' == 'true'" />
|
||||
|
||||
<!--
|
||||
=======
|
||||
PathMap
|
||||
=======
|
||||
|
||||
If DeterministicSourcePaths is true sets PathMap based on SourceRoot.MappedPaths.
|
||||
|
||||
This target requires SourceRoot to be initialized in order to calculate the PathMap.
|
||||
If SourceRoot doesn't contain any top-level roots an error is reported.
|
||||
-->
|
||||
|
||||
<Target Name="_SetPathMapFromSourceRoots"
|
||||
DependsOnTargets="InitializeSourceRootMappedPaths"
|
||||
BeforeTargets="CoreCompile"
|
||||
Condition="'$(DeterministicSourcePaths)' == 'true'">
|
||||
|
||||
<ItemGroup>
|
||||
<_TopLevelSourceRoot Include="@(SourceRoot)" Condition="'%(SourceRoot.NestedRoot)' == ''"/>
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Condition="'@(_TopLevelSourceRoot)' != ''">
|
||||
<!-- TODO: Report error/warning if /pathmap doesn't cover all emitted source paths: https://github.com/dotnet/roslyn/issues/23969 -->
|
||||
|
||||
<!-- TODO: PathMap should accept and ignore empty mapping: https://github.com/dotnet/roslyn/issues/23523 -->
|
||||
<PathMap Condition="'$(PathMap)' != ''">,$(PathMap)</PathMap>
|
||||
|
||||
<!--
|
||||
Prepend the SourceRoot.MappedPath values to PathMap, if it already has a value.
|
||||
For each emitted source path the compiler applies the first mapping that matches the path.
|
||||
PathMap values set previously will thus only be applied if the mapping provided by
|
||||
SourceRoot.MappedPath doesn't match. Since SourceRoot.MappedPath is also used by SourceLink
|
||||
preferring it over manually set PathMap ensures that PathMap is consistent with SourceLink.
|
||||
|
||||
TODO: quote the paths to avoid misinterpreting ',' and '=' in them as separators,
|
||||
but quoting doesn't currently work (see https://github.com/dotnet/roslyn/issues/22835).
|
||||
-->
|
||||
<PathMap>@(_TopLevelSourceRoot->'%(Identity)=%(MappedPath)', ',')$(PathMap)</PathMap>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
|
||||
</Project>
|
Reference in New Issue
Block a user