mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
build, win: make LTCG optional
Disables Link Time Code Generation by default. Adds ‘ltcg’ vcbuild option to enable it. LTCG will be used by default by release and CI builds. PR-URL: https://github.com/nodejs/node/pull/21186 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
This commit is contained in:
parent
8d33bbf168
commit
7c452845b8
48
common.gypi
48
common.gypi
@ -16,6 +16,7 @@
|
||||
'node_use_v8_platform%': 'true',
|
||||
'node_use_bundled_v8%': 'true',
|
||||
'node_module_version%': '',
|
||||
'node_with_ltcg%': '',
|
||||
|
||||
'node_tag%': '',
|
||||
'uv_library%': 'static_library',
|
||||
@ -192,6 +193,35 @@
|
||||
'RuntimeLibrary': 0 # MultiThreaded (/MT)
|
||||
}
|
||||
}
|
||||
}],
|
||||
['node_with_ltcg=="true"', {
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'WholeProgramOptimization': 'true' # /GL, whole program optimization, needed for LTCG
|
||||
},
|
||||
'VCLibrarianTool': {
|
||||
'AdditionalOptions': [
|
||||
'/LTCG:INCREMENTAL', # link time code generation
|
||||
]
|
||||
},
|
||||
'VCLinkerTool': {
|
||||
'OptimizeReferences': 2, # /OPT:REF
|
||||
'EnableCOMDATFolding': 2, # /OPT:ICF
|
||||
'LinkIncremental': 1, # disable incremental linking
|
||||
'AdditionalOptions': [
|
||||
'/LTCG:INCREMENTAL', # incremental link-time code generation
|
||||
]
|
||||
}
|
||||
}
|
||||
}, {
|
||||
'msvs_settings': {
|
||||
'VCCLCompilerTool': {
|
||||
'WholeProgramOptimization': 'false'
|
||||
},
|
||||
'VCLinkerTool': {
|
||||
'LinkIncremental': 2 # enable incremental linking
|
||||
}
|
||||
}
|
||||
}]
|
||||
],
|
||||
'msvs_settings': {
|
||||
@ -199,7 +229,6 @@
|
||||
'Optimization': 3, # /Ox, full optimization
|
||||
'FavorSizeOrSpeed': 1, # /Ot, favor speed over size
|
||||
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
|
||||
'WholeProgramOptimization': 'true', # /GL, whole program optimization, needed for LTCG
|
||||
'OmitFramePointers': 'true',
|
||||
'EnableFunctionLevelLinking': 'true',
|
||||
'EnableIntrinsicFunctions': 'true',
|
||||
@ -207,21 +236,8 @@
|
||||
'AdditionalOptions': [
|
||||
'/MP', # compile across multiple CPUs
|
||||
],
|
||||
},
|
||||
'VCLibrarianTool': {
|
||||
'AdditionalOptions': [
|
||||
'/LTCG', # link time code generation
|
||||
],
|
||||
},
|
||||
'VCLinkerTool': {
|
||||
'OptimizeReferences': 2, # /OPT:REF
|
||||
'EnableCOMDATFolding': 2, # /OPT:ICF
|
||||
'LinkIncremental': 1, # disable incremental linking
|
||||
'AdditionalOptions': [
|
||||
'/LTCG:INCREMENTAL', # incremental link-time code generation
|
||||
],
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
# Forcibly disable -Werror. We support a wide range of compilers, it's
|
||||
|
9
configure
vendored
9
configure
vendored
@ -425,6 +425,11 @@ intl_optgroup.add_option('--with-icu-source',
|
||||
dest='with_icu_source',
|
||||
help='Intl mode: optional local path to icu/ dir, or path/URL of icu source archive.')
|
||||
|
||||
parser.add_option('--with-ltcg',
|
||||
action='store_true',
|
||||
dest='with_ltcg',
|
||||
help='Use Link Time Code Generation. This feature is only available on Windows.')
|
||||
|
||||
intl_optgroup.add_option('--download',
|
||||
action='store',
|
||||
dest='download_list',
|
||||
@ -953,6 +958,10 @@ def configure_node(o):
|
||||
else:
|
||||
o['variables']['node_use_perfctr'] = 'false'
|
||||
|
||||
o['variables']['node_with_ltcg'] = b(options.with_ltcg)
|
||||
if flavor != 'win' and options.with_ltcg:
|
||||
raise Exception('Link Time Code Generation is only supported on Windows.')
|
||||
|
||||
if options.tag:
|
||||
o['variables']['node_tag'] = '-' + options.tag
|
||||
else:
|
||||
|
@ -15,6 +15,7 @@ cd %~dp0
|
||||
set config=Release
|
||||
set target=Build
|
||||
set target_arch=x64
|
||||
set ltcg=
|
||||
set target_env=
|
||||
set noprojgen=
|
||||
set projgen=
|
||||
@ -61,7 +62,7 @@ set doc=
|
||||
:next-arg
|
||||
if "%1"=="" goto args-done
|
||||
if /i "%1"=="debug" set config=Debug&goto arg-ok
|
||||
if /i "%1"=="release" set config=Release&goto arg-ok
|
||||
if /i "%1"=="release" set config=Release&set ltcg=1&goto arg-ok
|
||||
if /i "%1"=="clean" set target=Clean&goto arg-ok
|
||||
if /i "%1"=="ia32" set target_arch=x86&goto arg-ok
|
||||
if /i "%1"=="x86" set target_arch=x86&goto arg-ok
|
||||
@ -75,6 +76,7 @@ if /i "%1"=="sign" set sign=1&goto arg-ok
|
||||
if /i "%1"=="nosnapshot" set nosnapshot=1&goto arg-ok
|
||||
if /i "%1"=="noetw" set noetw=1&goto arg-ok
|
||||
if /i "%1"=="noperfctr" set noperfctr=1&goto arg-ok
|
||||
if /i "%1"=="ltcg" set ltcg=1&goto arg-ok
|
||||
if /i "%1"=="licensertf" set licensertf=1&goto arg-ok
|
||||
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
|
||||
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
|
||||
@ -150,6 +152,7 @@ if defined build_release (
|
||||
set download_arg="--download=all"
|
||||
set i18n_arg=small-icu
|
||||
set projgen=1
|
||||
set ltcg=1
|
||||
)
|
||||
|
||||
:: assign path to node_exe
|
||||
@ -162,6 +165,7 @@ if "%config%"=="Debug" set configure_flags=%configure_flags% --debug
|
||||
if defined nosnapshot set configure_flags=%configure_flags% --without-snapshot
|
||||
if defined noetw set configure_flags=%configure_flags% --without-etw& set noetw_msi_arg=/p:NoETW=1
|
||||
if defined noperfctr set configure_flags=%configure_flags% --without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
|
||||
if defined ltcg set configure_flags=%configure_flags% --with-ltcg
|
||||
if defined release_urlbase set configure_flags=%configure_flags% --release-urlbase=%release_urlbase%
|
||||
if defined download_arg set configure_flags=%configure_flags% %download_arg%
|
||||
if defined enable_vtune_arg set configure_flags=%configure_flags% --enable-vtune-profiling
|
||||
@ -656,7 +660,7 @@ del .used_configure_flags
|
||||
goto exit
|
||||
|
||||
:help
|
||||
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] [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]
|
||||
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]
|
||||
echo Examples:
|
||||
echo vcbuild.bat : builds release build
|
||||
echo vcbuild.bat debug : builds debug build
|
||||
|
Loading…
Reference in New Issue
Block a user