Files
AtomUI/build/AtomUI.Repository.targets
T

160 lines
10 KiB
XML

<Project>
<PropertyGroup>
<EnableTrimAnalyzer
Condition="'$(EnableTrimAnalyzer)' == '' and
('$(PublishTrimmed)' == 'true' or
'$(PublishAot)' == 'true' or
'$(RunAOTCompilation)' == 'true')">true</EnableTrimAnalyzer>
<EnableTrimAnalyzer Condition="'$(EnableTrimAnalyzer)' == ''">false</EnableTrimAnalyzer>
<EnableAotAnalyzer
Condition="'$(EnableAotAnalyzer)' == '' and
('$(PublishAot)' == 'true' or
'$(RunAOTCompilation)' == 'true')">true</EnableAotAnalyzer>
<EnableAotAnalyzer Condition="'$(EnableAotAnalyzer)' == ''">false</EnableAotAnalyzer>
<EnableSingleFileAnalyzer
Condition="'$(EnableSingleFileAnalyzer)' == '' and
'$(PublishSingleFile)' == 'true'">true</EnableSingleFileAnalyzer>
<EnableSingleFileAnalyzer Condition="'$(EnableSingleFileAnalyzer)' == ''">false</EnableSingleFileAnalyzer>
</PropertyGroup>
<PropertyGroup Condition="$(MSBuildProjectName.StartsWith('AtomUI.')) and
'$(OutputType)' == 'Library' and
'$(IsTestProject)' != 'true' and
'$(IsRoslynComponent)' != 'true' and
$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', 'net8.0'))">
<IsTrimmable Condition="'$(IsTrimmable)' == ''">true</IsTrimmable>
<IsAotCompatible Condition="'$(IsAotCompatible)' == ''">true</IsAotCompatible>
</PropertyGroup>
<!-- https://github.com/dotnet/sdk/issues/22515 -->
<ItemGroup>
<None Remove="*.csproj.DotSettings" />
</ItemGroup>
<ItemGroup Condition="'$(CompilerGeneratedFilesOutputPath)' != ''">
<Compile Remove="$(CompilerGeneratedFilesOutputPath)/**/*.cs" />
</ItemGroup>
<ItemGroup Condition="'$(IsTestProject)' != 'true' and '$(IsRoslynComponent)' != 'true' and '$(MSBuildProjectName)' != 'AtomUI.Toolchain'">
<ProjectReference Include="$(MSBuildThisFileDirectory)../src/AtomUI.Generator/AtomUI.Generator.csproj"
OutputItemType="Analyzer" ReferenceOutputAssembly="false" Private="false" PrivateAssets="all"
Condition="'@(ProjectReference->WithMetadataValue('Filename', 'AtomUI.Generator'))' == ''" />
</ItemGroup>
<Import Project="$(MSBuildThisFileDirectory)AtomUI.Generator.targets" />
<ItemGroup>
<ProjectReference Update="@(ProjectReference->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
<GlobalPropertiesToRemove>%(ProjectReference.GlobalPropertiesToRemove);$(AtomUIToolchainGlobalPropertiesToRemove)</GlobalPropertiesToRemove>
</ProjectReference>
</ItemGroup>
<!-- NuGet's path walk rebuilds ProjectReference items from strings, dropping their
metadata. Reapply the tool boundary before it schedules those restore projects. -->
<Target Name="AtomUIIsolateToolchainRestore" AfterTargets="_GenerateRestoreProjectPathItems">
<ItemGroup>
<_CurrentRestoreProjectPathItems Update="@(_CurrentRestoreProjectPathItems->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
<UndefineProperties>%(_CurrentRestoreProjectPathItems.UndefineProperties);$(AtomUIToolchainGlobalPropertiesToRemove)</UndefineProperties>
</_CurrentRestoreProjectPathItems>
</ItemGroup>
</Target>
<Target Name="AtomUIIsolateToolchainRestoreGraph" BeforeTargets="_GenerateRestoreGraph">
<ItemGroup>
<_RestoreProjectPathItems Update="@(_RestoreProjectPathItems->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
<UndefineProperties>%(_RestoreProjectPathItems.UndefineProperties);$(AtomUIToolchainGlobalPropertiesToRemove)</UndefineProperties>
</_RestoreProjectPathItems>
<FilteredRestoreGraphProjectInputItems Update="@(FilteredRestoreGraphProjectInputItems->WithMetadataValue('Filename', 'AtomUI.Toolchain'))">
<UndefineProperties>%(FilteredRestoreGraphProjectInputItems.UndefineProperties);$(AtomUIToolchainGlobalPropertiesToRemove)</UndefineProperties>
</FilteredRestoreGraphProjectInputItems>
</ItemGroup>
</Target>
<Target Name="AtomUICleanTestResultsBeforeRun"
BeforeTargets="VSTest"
Condition="'$(IsTestProject)' == 'true'">
<ItemGroup>
<_AtomUITestResultsDirectoryToCleanBeforeRun Include="$(MSBuildProjectDirectory)/TestResults"
Condition="Exists('$(MSBuildProjectDirectory)/TestResults')" />
<_AtomUITestResultsDirectoryToCleanBeforeRun Include="$(AtomUITestResultsDirectory)"
Condition="'$(AtomUITestResultsDirectory)' != '' and Exists('$(AtomUITestResultsDirectory)')" />
</ItemGroup>
<RemoveDir Directories="@(_AtomUITestResultsDirectoryToCleanBeforeRun)" />
</Target>
<Target Name="AtomUIRejectPersistentVSTestDumps"
BeforeTargets="VSTest"
Condition="'$(IsTestProject)' == 'true'">
<Error Condition="'$(VSTestBlameHangDumpType)' == 'full' or '$(VSTestBlameHangDumpType)' == 'mini'"
Text="AtomUI test runs must not collect persistent VSTest hang dumps. Use --blame-hang-dump-type none or move dump collection outside the repository." />
<Error Condition="'$(VSTestBlameCrashDumpType)' == 'full' or '$(VSTestBlameCrashDumpType)' == 'mini'"
Text="AtomUI test runs must not collect persistent VSTest crash dumps. Use --blame-crash-dump-type none or move dump collection outside the repository." />
</Target>
<Target Name="AtomUICleanTestResultsAfterRun"
AfterTargets="VSTest"
Condition="'$(IsTestProject)' == 'true'">
<ItemGroup>
<_AtomUITestResultsDirectoryToCleanAfterRun Include="$(MSBuildProjectDirectory)/TestResults"
Condition="Exists('$(MSBuildProjectDirectory)/TestResults')" />
<_AtomUITestResultsDirectoryToCleanAfterRun Include="$(AtomUITestResultsDirectory)"
Condition="'$(AtomUITestResultsDirectory)' != '' and Exists('$(AtomUITestResultsDirectory)')" />
</ItemGroup>
<RemoveDir Directories="@(_AtomUITestResultsDirectoryToCleanAfterRun)" />
</Target>
<!-- Package assembly owns tool preparation, not the source generator project. -->
<Target Name="AtomUIPrepareRepositoryPackageTools"
BeforeTargets="AtomUIPrepareGeneratorConsumerPackageAssets;_GetPackageFiles"
Condition="'$(NoBuild)' != 'true' and '$(IsPackable)' == 'true' and ('$(AtomUIRegistrationPackageId)' != '' or '$(MSBuildProjectName)' == 'AtomUI.Generator')">
<MSBuild Projects="$(AtomUIToolchainProject)" Targets="BuildToolchain"
RemoveProperties="$(AtomUIToolchainGlobalPropertiesToRemove)"
Properties="Configuration=$(Configuration);AtomUIToolchainProfile=Tasks" />
</Target>
<Target Name="AtomUIPrepareGeneratorConsumerPackageAssets"
BeforeTargets="_GetPackageFiles"
Condition="'$(IsPackable)' == 'true' and '$(AtomUIRegistrationPackageId)' != ''">
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)AtomUI.Generator.props"
Pack="true"
PackagePath="buildTransitive/$(PackageId).props"
Visible="false"
Condition="'@(AtomUILanguage)' == ''" />
<None Include="$(MSBuildThisFileDirectory)AtomUI.GeneratorConsumer.targets"
Pack="true"
PackagePath="buildTransitive/$(PackageId).targets" />
<None Include="@(AtomUINuGetBuildAsset)"
Pack="true" />
<None Include="@(AtomUIGeneratorToolAsset)"
Pack="true" />
</ItemGroup>
<Error Condition="!Exists('%(AtomUINuGetBuildAsset.Identity)')"
Text="AtomUI Generator build asset could not be found at '%(AtomUINuGetBuildAsset.Identity)'." />
<Error Condition="!Exists('%(AtomUIGeneratorToolAsset.Identity)')"
Text="Prepared AtomUI.Toolchain asset is missing at '%(AtomUIGeneratorToolAsset.Identity)'. Prepare the toolchain with BuildToolchain before packing with --no-build." />
</Target>
<!-- Source checkout publishing prepares the same toolchain that packages ship. This hook
is absent from NuGet consumers and is never reached by an ordinary product Build. -->
<Target Name="AtomUIPrepareRepositoryPublishTools"
BeforeTargets="AtomUIPrepareTypeMapBackend;AtomUIPrepareNet8ManagedRegistration;AtomUIPrepareConditionalBridgeManaged;AtomUIPrepareConditionalBridgeNative;AtomUIPrepareNative8Registration"
Condition="'$(MSBuildProjectName)' != 'AtomUI.Toolchain' and ('$(PublishTrimmed)' == 'true' or '$(PublishAot)' == 'true')">
<PropertyGroup>
<_AtomUIRepositoryToolchainTarget>BuildManagedToolchain</_AtomUIRepositoryToolchainTarget>
<_AtomUIRepositoryToolchainTarget Condition="'$(_AtomUINative8Registration)' == 'true'">Build</_AtomUIRepositoryToolchainTarget>
<_AtomUIRepositoryBackendProfile Condition="'$(_AtomUIRegistrationFrameworkFamily)' == 'OfficialTypeMap'">ILLink10</_AtomUIRepositoryBackendProfile>
<_AtomUIRepositoryBackendProfile Condition="'$(_AtomUIRegistrationFrameworkFamily)' == 'Net8Compatibility'">ILLink8</_AtomUIRepositoryBackendProfile>
</PropertyGroup>
<MSBuild Projects="$(AtomUIToolchainProject)" Targets="$(_AtomUIRepositoryToolchainTarget)"
RemoveProperties="NoBuild;NoRestore;$(AtomUIToolchainGlobalPropertiesToRemove)"
Properties="Configuration=$(Configuration);AtomUIToolchainProfile=Tasks;AtomUIToolchainBackendProfiles=$(_AtomUIRepositoryBackendProfile)" />
<MSBuild Condition="'$(_AtomUINative8Registration)' == 'true'"
Projects="$(AtomUIToolchainProject)" Targets="PrepareNativeCompiler"
RemoveProperties="NoBuild;NoRestore;$(AtomUIToolchainGlobalPropertiesToRemove)"
Properties="Configuration=$(Configuration);AtomUIToolchainProfile=Tasks" />
</Target>
</Project>