From 9e8c09808deb93fa53b746936c4e77367262e982 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 13:40:01 +0000 Subject: [PATCH 1/3] Initial plan From ec0911b270fc5ff5e44c40b13bcef7020733bc5a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 10 Dec 2025 14:03:31 +0000 Subject: [PATCH 2/3] Replace deprecated wmic with MSBuild parallelism settings - Remove wmic-based NumberOfCores detection from build-runtime.cmd and build.cmd - Replace with UseMultiToolTask, EnforceProcessCountAcrossBuilds, and EnableClServerMode environment variables - Remove CL_MPCount property from Directory.Build.props which depended on NumberOfCores - These changes follow Microsoft's recommended approach for C++ build parallelism Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com> --- src/coreclr/Directory.Build.props | 1 - src/coreclr/build-runtime.cmd | 16 +++++----------- src/tests/build.cmd | 16 +++++----------- 3 files changed, 10 insertions(+), 23 deletions(-) diff --git a/src/coreclr/Directory.Build.props b/src/coreclr/Directory.Build.props index 233bfbeacebf0c..2eab0816071b96 100644 --- a/src/coreclr/Directory.Build.props +++ b/src/coreclr/Directory.Build.props @@ -24,6 +24,5 @@ false false - $(NumberOfCores) diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd index b88cd359d6dce9..9819f211477064 100644 --- a/src/coreclr/build-runtime.cmd +++ b/src/coreclr/build-runtime.cmd @@ -266,17 +266,11 @@ echo %__MsgPrefix%Using CMake from !CMakePath! :SkipLocateCMake -REM NumberOfCores is an WMI property providing number of physical cores on machine -REM processor(s). It is used to set optimal level of CL parallelism during native build step -if not defined NumberOfCores ( - REM Determine number of physical processor cores available on machine - set TotalNumberOfCores=0 - for /f "tokens=*" %%I in ( - 'wmic cpu get NumberOfCores /value ^| find "=" 2^>NUL' - ) do set %%I & set /a TotalNumberOfCores=TotalNumberOfCores+NumberOfCores - set NumberOfCores=!TotalNumberOfCores! -) -echo %__MsgPrefix%Number of processor cores %NumberOfCores% +REM Set MSBuild parallelism settings for better build performance +REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/ +set UseMultiToolTask=true +set EnforceProcessCountAcrossBuilds=true +set EnableClServerMode=true REM ========================================================================================= REM === diff --git a/src/tests/build.cmd b/src/tests/build.cmd index 73691be70ac458..2488005529f8b4 100644 --- a/src/tests/build.cmd +++ b/src/tests/build.cmd @@ -268,17 +268,11 @@ echo %__MsgPrefix%Commencing build of native test components for %__BuildArch%/% REM Set the environment for the native build -REM NumberOfCores is an WMI property providing number of physical cores on machine -REM processor(s). It is used to set optimal level of CL parallelism during native build step -if not defined NumberOfCores ( - REM Determine number of physical processor cores available on machine - set TotalNumberOfCores=0 - for /f "tokens=*" %%I in ( - 'wmic cpu get NumberOfCores /value ^| find "=" 2^>NUL' - ) do set %%I & set /a TotalNumberOfCores=TotalNumberOfCores+NumberOfCores - set NumberOfCores=!TotalNumberOfCores! -) -echo %__MsgPrefix%Number of processor cores %NumberOfCores% +REM Set MSBuild parallelism settings for better build performance +REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/ +set UseMultiToolTask=true +set EnforceProcessCountAcrossBuilds=true +set EnableClServerMode=true @if defined _echo @echo on From 3c9eb2a4789a7eac4abf5f1318d9694a7a8b11dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 26 Jan 2026 16:54:22 +0000 Subject: [PATCH 3/3] Move MSBuild parallelism settings to root Directory.Build.props - Remove environment variable settings from build-runtime.cmd and build.cmd - Add UseMultiToolTask, EnforceProcessCountAcrossBuilds, and EnableClServerMode as MSBuild properties in root Directory.Build.props - Keep wmic removal and CL_MPCount removal from previous commit Co-authored-by: akoeplinger <1376924+akoeplinger@users.noreply.github.com> --- Directory.Build.props | 8 ++++++++ src/coreclr/build-runtime.cmd | 6 ------ src/tests/build.cmd | 6 ------ 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 7c3b8f4429eb67..30419669011184 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -55,6 +55,14 @@ + + + true + true + true + + 11.0 diff --git a/src/coreclr/build-runtime.cmd b/src/coreclr/build-runtime.cmd index 9819f211477064..c373274f39a95d 100644 --- a/src/coreclr/build-runtime.cmd +++ b/src/coreclr/build-runtime.cmd @@ -266,12 +266,6 @@ echo %__MsgPrefix%Using CMake from !CMakePath! :SkipLocateCMake -REM Set MSBuild parallelism settings for better build performance -REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/ -set UseMultiToolTask=true -set EnforceProcessCountAcrossBuilds=true -set EnableClServerMode=true - REM ========================================================================================= REM === REM === Start the build steps diff --git a/src/tests/build.cmd b/src/tests/build.cmd index 2488005529f8b4..beea809039f83f 100644 --- a/src/tests/build.cmd +++ b/src/tests/build.cmd @@ -268,12 +268,6 @@ echo %__MsgPrefix%Commencing build of native test components for %__BuildArch%/% REM Set the environment for the native build -REM Set MSBuild parallelism settings for better build performance -REM See https://devblogs.microsoft.com/cppblog/cpp-build-throughput-investigation-and-tune-up/ -set UseMultiToolTask=true -set EnforceProcessCountAcrossBuilds=true -set EnableClServerMode=true - @if defined _echo @echo on set __ExtraCmakeArgs=