Skip to content

Commit e0f3d57

Browse files
joaocgreistargos
authored andcommitted
build,win,v8: allow precompiling objects-inl.h
This makes compiling v8_base much faster on Windows. Sharding is disabled because the header would have to be precompiled for each shard but is only once. The library is much smaller, so sharding is unnecessary. This is enabled by default, but disabled for CI and releases. PR-URL: #21772 Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: Refael Ackermann <[email protected]> Reviewed-By: Kyle Farnung <[email protected]> Reviewed-By: Bartosz Sosnowski <[email protected]>
1 parent 62024b6 commit e0f3d57

File tree

6 files changed

+33
-6
lines changed

6 files changed

+33
-6
lines changed

common.gypi

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
'node_use_bundled_v8%': 'true',
1818
'node_module_version%': '',
1919
'node_with_ltcg%': '',
20+
'node_use_pch%': 'false',
2021

2122
'node_tag%': '',
2223
'uv_library%': 'static_library',

configure

+10
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,11 @@ parser.add_option('--with-ltcg',
438438
dest='with_ltcg',
439439
help='Use Link Time Code Generation. This feature is only available on Windows.')
440440

441+
parser.add_option('--with-pch',
442+
action='store_true',
443+
dest='with_pch',
444+
help='Use Precompiled Headers (only available on Windows).')
445+
441446
intl_optgroup.add_option('--download',
442447
action='store',
443448
dest='download_list',
@@ -995,6 +1000,11 @@ def configure_node(o):
9951000
if flavor != 'win' and options.with_ltcg:
9961001
raise Exception('Link Time Code Generation is only supported on Windows.')
9971002

1003+
if flavor == 'win':
1004+
o['variables']['node_use_pch'] = b(options.with_pch)
1005+
else:
1006+
o['variables']['node_use_pch'] = 'false'
1007+
9981008
if options.tag:
9991009
o['variables']['node_tag'] = '-' + options.tag
10001010
else:

deps/v8/gypfiles/v8.gyp

+14-4
Original file line numberDiff line numberDiff line change
@@ -1796,10 +1796,20 @@
17961796
'gyp_generators': '<!(echo $GYP_GENERATORS)',
17971797
},
17981798
'msvs_disabled_warnings': [4351, 4355, 4800],
1799-
# When building Official, the .lib is too large and exceeds the 2G
1800-
# limit. This breaks it into multiple pieces to avoid the limit.
1801-
# See http://crbug.com/485155.
1802-
'msvs_shard': 4,
1799+
'conditions': [
1800+
['node_use_pch!="true"', {
1801+
# When building Official, the .lib is too large and exceeds the 2G
1802+
# limit. This breaks it into multiple pieces to avoid the limit.
1803+
# See http://crbug.com/485155.
1804+
'msvs_shard': 4,
1805+
}, {
1806+
'msvs_precompiled_header': 'tools/msvs/pch/pch_v8_base.h',
1807+
'msvs_precompiled_source': '../../../tools/msvs/pch/pch_v8_base.cc',
1808+
'sources': [
1809+
'../../../tools/msvs/pch/pch_v8_base.cc',
1810+
],
1811+
}],
1812+
],
18031813
# This will prevent V8's .cc files conflicting with the inspector's
18041814
# .cpp files in the same shard.
18051815
'msvs_settings': {

tools/msvs/pch/pch_v8_base.cc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "tools/msvs/pch/pch_v8_base.h"

tools/msvs/pch/pch_v8_base.h

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "src/objects-inl.h"

vcbuild.bat

+6-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ set config=Release
1616
set target=Build
1717
set target_arch=x64
1818
set ltcg=
19+
set pch=1
1920
set target_env=
2021
set noprojgen=
2122
set projgen=
@@ -62,7 +63,7 @@ set doc=
6263
:next-arg
6364
if "%1"=="" goto args-done
6465
if /i "%1"=="debug" set config=Debug&goto arg-ok
65-
if /i "%1"=="release" set config=Release&set ltcg=1&goto arg-ok
66+
if /i "%1"=="release" set config=Release&set ltcg=1&set "pch="&goto arg-ok
6667
if /i "%1"=="clean" set target=Clean&goto arg-ok
6768
if /i "%1"=="ia32" set target_arch=x86&goto arg-ok
6869
if /i "%1"=="x86" set target_arch=x86&goto arg-ok
@@ -77,6 +78,7 @@ if /i "%1"=="nosnapshot" set nosnapshot=1&goto arg-ok
7778
if /i "%1"=="noetw" set noetw=1&goto arg-ok
7879
if /i "%1"=="noperfctr" set noperfctr=1&goto arg-ok
7980
if /i "%1"=="ltcg" set ltcg=1&goto arg-ok
81+
if /i "%1"=="nopch" set "pch="&goto arg-ok
8082
if /i "%1"=="licensertf" set licensertf=1&goto arg-ok
8183
if /i "%1"=="test" set test_args=%test_args% -J %common_test_suites%&set lint_cpp=1&set lint_js=1&set lint_md=1&goto arg-ok
8284
if /i "%1"=="test-ci" set test_args=%test_args% %test_ci_args% -p tap --logfile test.tap %common_test_suites%&set cctest_args=%cctest_args% --gtest_output=tap:cctest.tap&goto arg-ok
@@ -153,6 +155,7 @@ if defined build_release (
153155
set i18n_arg=small-icu
154156
set projgen=1
155157
set ltcg=1
158+
set "pch="
156159
)
157160

158161
:: assign path to node_exe
@@ -166,6 +169,7 @@ if defined nosnapshot set configure_flags=%configure_flags% --without-snap
166169
if defined noetw set configure_flags=%configure_flags% --without-etw& set noetw_msi_arg=/p:NoETW=1
167170
if defined noperfctr set configure_flags=%configure_flags% --without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
168171
if defined ltcg set configure_flags=%configure_flags% --with-ltcg
172+
if defined pch set configure_flags=%configure_flags% --with-pch
169173
if defined release_urlbase set configure_flags=%configure_flags% --release-urlbase=%release_urlbase%
170174
if defined download_arg set configure_flags=%configure_flags% %download_arg%
171175
if defined enable_vtune_arg set configure_flags=%configure_flags% --enable-vtune-profiling
@@ -669,7 +673,7 @@ del .used_configure_flags
669673
goto exit
670674

671675
:help
672-
echo vcbuild.bat [debug/release] [msi] [doc] [test/test-ci/test-all/test-addons/test-addons-napi/test-internet/test-pummel/test-simple/test-message/test-gc/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-async-hooks/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [ignore-flaky] [static/dll] [noprojgen] [projgen] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [noetw] [noperfctr] [ltcg] [licensetf] [sign] [ia32/x86/x64] [vs2017] [download-all] [enable-vtune] [lint/lint-ci/lint-js/lint-js-ci/lint-md] [lint-md-build] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [no-cctest] [openssl-no-asm]
676+
echo vcbuild.bat [debug/release] [msi] [doc] [test/test-ci/test-all/test-addons/test-addons-napi/test-internet/test-pummel/test-simple/test-message/test-gc/test-tick-processor/test-known-issues/test-node-inspect/test-check-deopts/test-npm/test-async-hooks/test-v8/test-v8-intl/test-v8-benchmarks/test-v8-all] [ignore-flaky] [static/dll] [noprojgen] [projgen] [small-icu/full-icu/without-intl] [nobuild] [nosnapshot] [noetw] [noperfctr] [ltcg] [nopch] [licensetf] [sign] [ia32/x86/x64] [vs2017] [download-all] [enable-vtune] [lint/lint-ci/lint-js/lint-js-ci/lint-md] [lint-md-build] [package] [build-release] [upload] [no-NODE-OPTIONS] [link-module path-to-module] [debug-http2] [debug-nghttp2] [clean] [no-cctest] [openssl-no-asm]
673677
echo Examples:
674678
echo vcbuild.bat : builds release build
675679
echo vcbuild.bat debug : builds debug build

0 commit comments

Comments
 (0)