Support for short stack builds.

Tested with android-x64 and android-amd64 on Linux x64, and iossimulator-x64
on macOS ARM64.

Depends on https://github.com/dotnet/runtime/pull/97725
This commit is contained in:
Jo Shields 2024-01-30 17:35:07 -05:00
parent 4f0bdf152b
commit d78dbaca86
3 changed files with 19 additions and 3 deletions

View file

@ -6,6 +6,18 @@
<DotNetBuildOrchestrator>true</DotNetBuildOrchestrator> <DotNetBuildOrchestrator>true</DotNetBuildOrchestrator>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Label="ShortStacks">
<_OverrideTargetOS>$(OverrideTargetRid.Substring(0, $(OverrideTargetRid.LastIndexOf('-'))))</_OverrideTargetOS>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'wasi'">true</ShortStack>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'browser'">true</ShortStack>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'ios'">true</ShortStack>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'iossimulator'">true</ShortStack>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'tvos'">true</ShortStack>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'tvossimulator'">true</ShortStack>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'maccatalyst'">true</ShortStack>
<ShortStack Condition="'$(_OverrideTargetOS)' == 'android'">true</ShortStack>
</PropertyGroup>
<PropertyGroup Label="CalculateTargetOS"> <PropertyGroup Label="CalculateTargetOS">
<BuildOS>linux</BuildOS> <BuildOS>linux</BuildOS>
<BuildOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx</BuildOS> <BuildOS Condition="$([MSBuild]::IsOSPlatform('OSX'))">osx</BuildOS>
@ -33,7 +45,7 @@
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 's390x'">s390x</TargetArchitecture> <TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 's390x'">s390x</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'ppc64le'">ppc64le</TargetArchitecture> <TargetArchitecture Condition="'$(TargetArchitecture)' == '' and '$(BuildArchitecture)' == 'ppc64le'">ppc64le</TargetArchitecture>
<TargetArchitecture Condition="'$(OverrideTargetRid)' != ''">$(OverrideTargetRid.Substring($(OverrideTargetRid.LastIndexOf('-'))).TrimStart('-'))</TargetArchitecture> <TargetArchitecture Condition="'$(OverrideTargetRid)' != '' and '$(ShortStack)' != 'true'">$(OverrideTargetRid.Substring($(OverrideTargetRid.LastIndexOf('-'))).TrimStart('-'))</TargetArchitecture>
<TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture> <TargetArchitecture Condition="'$(TargetArchitecture)' == ''">x64</TargetArchitecture>
<Platform Condition="'$(Platform)' == '' and '$(InferPlatformFromTargetArchitecture)' == 'true'">$(TargetArchitecture)</Platform> <Platform Condition="'$(Platform)' == '' and '$(InferPlatformFromTargetArchitecture)' == 'true'">$(TargetArchitecture)</Platform>

View file

@ -24,6 +24,10 @@
<RepositoryReference Include="symreader" /> <RepositoryReference Include="symreader" />
<RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" /> <RepositoryReference Include="source-build-externals" Condition="'$(DotNetBuildSourceOnly)' == 'true'" />
<RepositoryReference Include="runtime" /> <RepositoryReference Include="runtime" />
</ItemGroup>
<!-- Stop build at this point for runtime-only platforms like iOS -->
<ItemGroup Condition="'$(ShortStack)' != 'true'">
<RepositoryReference Include="roslyn" /> <RepositoryReference Include="roslyn" />
<RepositoryReference Include="windowsdesktop" Condition="'$(TargetOS)' == 'windows'" /> <RepositoryReference Include="windowsdesktop" Condition="'$(TargetOS)' == 'windows'" />
<RepositoryReference Include="xdt" /> <RepositoryReference Include="xdt" />

View file

@ -20,8 +20,8 @@
<BuildArgs Condition="'$(OverrideTargetArch)' != ''">$(BuildArgs) $(FlagParameterPrefix)arch $(OverrideTargetArch)</BuildArgs> <BuildArgs Condition="'$(OverrideTargetArch)' != ''">$(BuildArgs) $(FlagParameterPrefix)arch $(OverrideTargetArch)</BuildArgs>
<BuildArgs Condition="'$(OverrideTargetOS)' != ''">$(BuildArgs) $(FlagParameterPrefix)os $(OverrideTargetOS)</BuildArgs> <BuildArgs Condition="'$(OverrideTargetOS)' != ''">$(BuildArgs) $(FlagParameterPrefix)os $(OverrideTargetOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:TargetRid=$(OverrideTargetRid)</BuildArgs> <BuildArgs>$(BuildArgs) /p:TargetRid=$(OverrideTargetRid)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:RuntimeOS=$(RuntimeOS)</BuildArgs> <BuildArgs Condition="'$(ShortStack)' != 'true'">$(BuildArgs) /p:RuntimeOS=$(RuntimeOS)</BuildArgs>
<BuildArgs>$(BuildArgs) /p:BaseOS=$(BaseOS)</BuildArgs> <BuildArgs Condition="'$(ShortStack)' != 'true'">$(BuildArgs) /p:BaseOS=$(BaseOS)</BuildArgs>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'"> <PropertyGroup Condition="'$(DotNetBuildSourceOnly)' == 'true'">