Skip to content

Commit a278a26

Browse files
authored
Make SourceBuild.props work on Windows (#53523)
* Make SourceBuild.props work on Windows Contributes to VMR work: dotnet/source-build#3926 Changes are from dotnet/dotnet#46 * Update build.ps1
1 parent cc9cff3 commit a278a26

File tree

2 files changed

+33
-18
lines changed

2 files changed

+33
-18
lines changed

eng/SourceBuild.props

+16-7
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@
88
<SourceBuildTargetFrameworkFilter>netstandard2.0%3bnetstandard2.1%3bnetcoreapp2.1%3bnetcoreapp3.1%3bnet5.0%3bnet6.0%3bnet7.0%3bnet8.0%3bnet9.0</SourceBuildTargetFrameworkFilter>
99
</PropertyGroup>
1010

11+
<!-- Only run this target in source-build only mode. -->
1112
<Target Name="PrepareGlobalJsonForSourceBuild"
1213
AfterTargets="PrepareInnerSourceBuildRepoRoot"
13-
BeforeTargets="RunInnerSourceBuildCommand">
14+
BeforeTargets="RunInnerSourceBuildCommand"
15+
Condition="'$(ArcadeBuildFromSource)' == 'true'">
1416
<Exec
1517
Command="./eng/scripts/prepare-sourcebuild-globaljson.sh"
1618
WorkingDirectory="$(InnerSourceBuildRepoRoot)" />
@@ -28,13 +30,11 @@
2830
<Delete Files="$(InnerSourceBuildRepoRoot).globalconfig" />
2931
</Target>
3032

31-
<!--
32-
Build RepoTasks - this is normally triggered via the build script but the inner ArPow source-build is run via msbuild
33-
-->
33+
<!-- Build RepoTasks - this is normally triggered via the build script but the inner ArPow source-build is run via msbuild.
34+
https://github.com/dotnet/source-build/issues/3807 -->
3435
<Target Name="BuildRepoTasks"
3536
Condition="'$(ArcadeInnerBuildFromSource)' == 'true'"
3637
BeforeTargets="Execute">
37-
3838
<!-- If the alternative runtime location and key are present, pass those through -->
3939
<PropertyGroup>
4040
<_AdditionalRepoTaskBuildArgs />
@@ -45,7 +45,8 @@
4545
<ItemGroup>
4646
<!-- We need to flow FullAssemblySigningSupported even when building repo tasks because they use full signing -->
4747
<InnerBuildEnv Condition="'$(FullAssemblySigningSupported)' != ''" Include="FullAssemblySigningSupported=$(FullAssemblySigningSupported)" />
48-
<InnerBuildEnv Include="DotNetBuildFromSource=true" />
48+
<InnerBuildEnv Include="DotNetBuildFromSource=$(ArcadeBuildFromSource)" />
49+
<InnerBuildEnv Include="DotNetBuildVertical=$(ArcadeBuildVertical)" />
4950
</ItemGroup>
5051

5152
<!-- Call the build.sh script to build the repo tasks. Set IgnoreStandardErrorWarningFormat
@@ -56,7 +57,15 @@
5657
Command="./eng/build.sh --only-build-repo-tasks -bl $(_AdditionalRepoTaskBuildArgs)"
5758
IgnoreStandardErrorWarningFormat="true"
5859
WorkingDirectory="$(InnerSourceBuildRepoRoot)"
59-
EnvironmentVariables="@(InnerBuildEnv)" />
60+
EnvironmentVariables="@(InnerBuildEnv)"
61+
Condition="'$(OS)' != 'Windows_NT'" />
62+
63+
<Exec
64+
Command=".\eng\build.cmd -OnlyBuildRepoTasks -bl $(_AdditionalRepoTaskBuildArgs)"
65+
IgnoreStandardErrorWarningFormat="true"
66+
WorkingDirectory="$(InnerSourceBuildRepoRoot)"
67+
EnvironmentVariables="@(InnerBuildEnv)"
68+
Condition="'$(OS)' == 'Windows_NT'" />
6069
</Target>
6170

6271
<Target Name="CustomizeInnerBuildArgs"

eng/build.ps1

+17-11
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ Do not build project-to-project references and only build the specified project.
2727
.PARAMETER NoBuildRepoTasks
2828
Skip building eng/tools/RepoTasks/
2929
30+
.PARAMETER OnlyBuildRepoTasks
31+
Only build eng/tools/RepoTasks/ and nothing else.
32+
3033
.PARAMETER Pack
3134
Produce packages.
3235
@@ -159,6 +162,7 @@ param(
159162
[switch]$NoBuildInstallers,
160163

161164
[switch]$NoBuildRepoTasks,
165+
[switch]$OnlyBuildRepoTasks,
162166

163167
# Diagnostics
164168
[Alias('bl')]
@@ -437,20 +441,22 @@ try {
437441
@ToolsetBuildArguments
438442
}
439443

440-
if ($performDesktopBuild) {
441-
Write-Host
442-
Remove-Item variable:global:_BuildTool -ErrorAction Ignore
443-
$msbuildEngine = 'vs'
444+
if (-not $OnlyBuildRepoTasks) {
445+
if ($performDesktopBuild) {
446+
Write-Host
447+
Remove-Item variable:global:_BuildTool -ErrorAction Ignore
448+
$msbuildEngine = 'vs'
444449

445-
MSBuild $toolsetBuildProj /p:RepoRoot=$RepoRoot @MSBuildArguments
446-
}
450+
MSBuild $toolsetBuildProj /p:RepoRoot=$RepoRoot @MSBuildArguments
451+
}
447452

448-
if ($performDotnetBuild) {
449-
Write-Host
450-
Remove-Item variable:global:_BuildTool -ErrorAction Ignore
451-
$msbuildEngine = 'dotnet'
453+
if ($performDotnetBuild) {
454+
Write-Host
455+
Remove-Item variable:global:_BuildTool -ErrorAction Ignore
456+
$msbuildEngine = 'dotnet'
452457

453-
MSBuild $toolsetBuildProj /p:RepoRoot=$RepoRoot @dotnetBuildArguments
458+
MSBuild $toolsetBuildProj /p:RepoRoot=$RepoRoot @dotnetBuildArguments
459+
}
454460
}
455461
}
456462
catch {

0 commit comments

Comments
 (0)