@@ -24,6 +24,8 @@ set config=Release
2424set target = Build
2525set target_arch = x64
2626set ltcg =
27+ set pgo_generate =
28+ set pgo_use =
2729set target_env =
2830set noprojgen =
2931set projgen =
@@ -104,6 +106,8 @@ if /i "%1"=="sign" set sign=1&goto arg-ok
104106if /i " %1 " == " nosnapshot" set nosnapshot = 1& goto arg-ok
105107if /i " %1 " == " nonpm" set nonpm = 1& goto arg-ok
106108if /i " %1 " == " ltcg" set ltcg = 1& goto arg-ok
109+ if /i " %1 " == " pgo-generate" set pgo_generate = 1& goto arg-ok
110+ if /i " %1 " == " pgo-use" set pgo_use = 1& goto arg-ok
107111if /i " %1 " == " v8temporal" set v8temporal = 1& goto arg-ok
108112if /i " %1 " == " v8windbg" set v8windbg = 1& goto arg-ok
109113if /i " %1 " == " licensertf" set licensertf = 1& goto arg-ok
@@ -179,6 +183,14 @@ goto next-arg
179183
180184:args-done
181185
186+ :: PGO mutual exclusion
187+ if defined pgo_generate if defined pgo_use (
188+ echo Error: Only one of 'pgo-generate' or 'pgo-use' can be specified.
189+ echo pgo-generate : build instrumented binary, then profile it
190+ echo pgo-use : rebuild using the collected profile data
191+ exit /b 1
192+ )
193+
182194if defined build_release (
183195 set config = Release
184196 set package = 1
@@ -212,6 +224,8 @@ if "%config%"=="Debug" set configure_flags=%configure_flags% --debug
212224if defined nosnapshot set configure_flags = %configure_flags% --without-snapshot
213225if defined nonpm set configure_flags = %configure_flags% --without-npm
214226if defined ltcg set configure_flags = %configure_flags% --with-ltcg
227+ if defined pgo_generate set configure_flags = %configure_flags% --enable-pgo-generate
228+ if defined pgo_use set configure_flags = %configure_flags% --enable-pgo-use
215229if defined release_urlbase set configure_flags = %configure_flags% --release-urlbase=%release_urlbase%
216230if defined download_arg set configure_flags = %configure_flags% %download_arg%
217231if defined enable_vtune_arg set configure_flags = %configure_flags% --enable-vtune-profiling
@@ -875,7 +889,7 @@ set exit_code=1
875889goto exit
876890
877891:help
878- echo vcbuild.bat [debug/release] [msi] [doc] [test/test-all/test-addons/test-doc/test-js-native-api/test-node-api/test-internet/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [build-addons/build-js-native-api-tests/build-node-api-tests/build-ffi-tests] [ignore-flaky] [static/dll] [noprojgen] [projgen] [clang-cl] [ccache path-to-ccache] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [nonpm] [ltcg] [licensetf] [sign] [x64/arm64] [vs2022/vs2026] [download-all] [enable-vtune] [lint/lint-ci/lint-js/lint-md] [lint-md-build] [format-md] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [cctest] [no-cctest] [openssl-no-asm]
892+ echo vcbuild.bat [debug/release] [msi] [doc] [test/test-all/test-addons/test-doc/test-js-native-api/test-node-api/test-internet/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [build-addons/build-js-native-api-tests/build-node-api-tests/build-ffi-tests] [ignore-flaky] [static/dll] [noprojgen] [projgen] [clang-cl] [ccache path-to-ccache] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [nonpm] [ltcg] [pgo-generate] [pgo-use] [ licensetf] [sign] [x64/arm64] [vs2022/vs2026] [download-all] [enable-vtune] [lint/lint-ci/lint-js/lint-md] [lint-md-build] [format-md] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [cctest] [no-cctest] [openssl-no-asm]
879893echo Examples:
880894echo vcbuild.bat : builds release build
881895echo vcbuild.bat debug : builds debug build
@@ -887,6 +901,8 @@ echo vcbuild.bat link-module my_module.js : bundles my_module as built-in modu
887901echo vcbuild.bat lint : runs the C++, documentation and JavaScript linter
888902echo vcbuild.bat no-cctest : skip building cctest.exe
889903echo vcbuild.bat ccache c:\ccache\ : use ccache to speed build
904+ echo vcbuild.bat pgo-generate : builds instrumented binary for PGO (profile first, then rebuild with pgo-use)
905+ echo vcbuild.bat pgo-use : builds optimized binary using PGO profile data
890906goto exit
891907
892908:exit
0 commit comments