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
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>
|
|
|