You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

71 lines
3.3 KiB

<?xml version="1.0" encoding="utf-8"?>
<Project>
<Import Project="InitializeSourceControlInformation.targets"/>
<UsingTask TaskName="Microsoft.SourceLink.Common.GenerateSourceLinkFile" AssemblyFile="$(_MicrosoftSourceLinkCommonAssemblyFile)"/>
<Target Name="_SetSourceLinkFilePath">
<PropertyGroup>
<SourceLink>$(IntermediateOutputPath)$(MSBuildProjectName).sourcelink.json</SourceLink>
</PropertyGroup>
</Target>
<!--
Triggers SetEmbeddedFilesFromSourceControlManagerUntrackedFiles target defined by a source control package Microsoft.Build.Tasks.{Git|Tfvc|...}.
Assumes that all targets that generate source files and add them to Compile items run before BeforeCompile target.
This is a convention established by common targets.
-->
<Target Name="_SetEmbeddedFilesFromSourceControlManagerUntrackedFiles"
DependsOnTargets="BeforeCompile;SetEmbeddedFilesFromSourceControlManagerUntrackedFiles"
BeforeTargets="CoreCompile"
Condition="'$(EmbedUntrackedSources)' == 'true' and '$(EmbedAllSources)' != 'true' and '$(DebugType)' != 'none' and '$(EnableSourceControlManagerQueries)' == 'true'" />
<!--
If defined populates MappedPath metadata of SourceRoot items.
-->
<Target Name="_InitializeSourceRootMappedPathsOpt"
DependsOnTargets="InitializeSourceRootMappedPaths"
Condition="'$(SourceRootMappedPathsFeatureSupported)' == 'true'"/>
<!--
Add compiler targets: C++ generates PDB with SourceLink in Link phase.
-->
<PropertyGroup Condition="'$(Language)' == 'C++'">
<_GenerateSourceLinkFileBeforeTargets>Link</_GenerateSourceLinkFileBeforeTargets>
<_GenerateSourceLinkFileDependsOnTargets>ComputeLinkSwitches</_GenerateSourceLinkFileDependsOnTargets>
</PropertyGroup>
<PropertyGroup Condition="'$(Language)' != 'C++'">
<_GenerateSourceLinkFileBeforeTargets>CoreCompile</_GenerateSourceLinkFileBeforeTargets>
<_GenerateSourceLinkFileDependsOnTargets/>
</PropertyGroup>
<!--
Each source control provider package adds its SourceLinkUrl initialization target to SourceLinkUrlInitializerTargets.
This target shall initialize SourceLinkUrl of all items that don't have it initialized yet and belong to the source control provider.
-->
<Target Name="_GenerateSourceLinkFile"
DependsOnTargets="_SetSourceLinkFilePath;$(_GenerateSourceLinkFileDependsOnTargets);_InitializeSourceRootMappedPathsOpt;$(SourceLinkUrlInitializerTargets)"
Condition="'$(EnableSourceLink)' == 'true' and '$(DebugType)' != 'none'"
Outputs="$(SourceLink)">
<Microsoft.SourceLink.Common.GenerateSourceLinkFile SourceRoots="@(SourceRoot)" OutputFile="$(SourceLink)" />
<ItemGroup>
<FileWrites Include="$(SourceLink)" />
</ItemGroup>
<!-- C++ Link task currently doesn't recognize SourceLink property -->
<ItemGroup Condition="'$(Language)' == 'C++'">
<Link Update="@(Link)">
<AdditionalOptions>%(Link.AdditionalOptions) /sourcelink:"$(SourceLink)"</AdditionalOptions>
</Link>
</ItemGroup>
</Target>
<Target Name="GenerateSourceLinkFile"
DependsOnTargets="InitializeSourceControlInformation;_GenerateSourceLinkFile"
Condition="'$(SourceControlInformationFeatureSupported)' == 'true'"
BeforeTargets="$(_GenerateSourceLinkFileBeforeTargets)"/>
</Project>