Skip to content

Commit 696cea0

Browse files
Copilotjtschuster
andauthored
Preserve default Ninja behavior when MSBuild property is unset (#134471)
## Summary Unset `Ninja` properties were treated as explicitly disabled, overriding the native build scripts’ default generator selection. Elsewhere in the clr build, Ninja is treated as the default. Usually this is propagated from the outer ./build.sh, but when building one of these projects directly (as trimmer tests do) without explicitly setting `/p:Ninja=true`, it defaults to Makefiles. This causes the build to fail if CMakeCache.txt is present after previous build used the default `Ninja`. ## Changes - Pass `-ninja false` only when `Ninja=false`. - Preserve explicit `Ninja=true` behavior. - Retain the existing Windows-specific MSBuild selection. - Apply consistently across CoreCLR, corehost, and native libraries. Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jtschuster <36744439+jtschuster@users.noreply.github.com>
1 parent bcd5bcb commit 696cea0

3 files changed

Lines changed: 3 additions & 3 deletions

File tree

‎src/coreclr/runtime.proj‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
'$(PgoInstrument)' != 'true'"
4444
Include="-enforcepgo" />
4545
<_CoreClrBuildArg Condition="'$(Ninja)' == 'true' and !$([MSBuild]::IsOsPlatform(Windows))" Include="-ninja" />
46-
<_CoreClrBuildArg Condition="'$(Ninja)' != 'true' and !$([MSBuild]::IsOsPlatform(Windows))" Include="-ninja false" />
46+
<_CoreClrBuildArg Condition="'$(Ninja)' == 'false' and !$([MSBuild]::IsOsPlatform(Windows))" Include="-ninja false" />
4747
<_CoreClrBuildArg Condition="'$(Ninja)' == 'false' and $([MSBuild]::IsOsPlatform(Windows))" Include="-msbuild" />
4848
<_CoreClrBuildArg Condition="'$(PgoInstrument)' == 'true'" Include="-pgoinstrument" />
4949
<_CoreClrBuildArg Condition="'$(NativeOptimizationDataSupported)' == 'true' and '$(NoPgoOptimize)' != 'true' and '$(PgoInstrument)' != 'true'" Include="-pgodatapath &quot;$(PgoPackagePath)&quot;" />

‎src/native/corehost/corehost.proj‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
<BuildArgs Condition="'$(CppCompilerAndLinker)' != ''">$(BuildArgs) $(CppCompilerAndLinker)</BuildArgs>
8686
<BuildArgs Condition="'$(CMakeArgs)' != ''">$(BuildArgs) -cmakeargs "$(CMakeArgs)"</BuildArgs>
8787
<BuildArgs Condition="'$(Ninja)' == 'true'">$(BuildArgs) -ninja</BuildArgs>
88-
<BuildArgs Condition="'$(Ninja)' != 'true'">$(BuildArgs) -ninja false</BuildArgs>
88+
<BuildArgs Condition="'$(Ninja)' == 'false'">$(BuildArgs) -ninja false</BuildArgs>
8989
<BuildArgs>$(BuildArgs) -runtimeflavor $(RuntimeFlavor)</BuildArgs>
9090
<BuildArgs Condition="'$(EnableNativeSanitizers)' != ''">$(BuildArgs) -fsanitize=$(EnableNativeSanitizers)</BuildArgs>
9191
<BuildArgs Condition="'$(OfficialBuildId)' != ''">$(BuildArgs) /p:OfficialBuildId="$(OfficialBuildId)"</BuildArgs>

‎src/native/libs/build-native.proj‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
Condition="!$([MSBuild]::IsOsPlatform(Windows))">
4141
<PropertyGroup>
4242
<_BuildNativeArgs Condition="'$(Ninja)' == 'true'">$(_BuildNativeArgs) ninja</_BuildNativeArgs>
43-
<_BuildNativeArgs Condition="'$(Ninja)' != 'true'">$(_BuildNativeArgs) ninja false</_BuildNativeArgs>
43+
<_BuildNativeArgs Condition="'$(Ninja)' == 'false'">$(_BuildNativeArgs) ninja false</_BuildNativeArgs>
4444
<!--
4545
MSBuildNodeCount should a good approximation for how many procs to use for native build, if we find that doesn't work
4646
then we should consider calling Environment.ProcessorCount

0 commit comments

Comments
 (0)