win, build: generate .sln only when necessary
When generating sln, store flags passed to configure. Next time, if node.sln exists and configure flags match those stored, skip building .sln files. Adds projgen vcbuild option to force .sln regeneration. PR-URL: https://github.com/nodejs/node/pull/21284 Reviewed-By: Refael Ackermann <refack@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
parent
8836a0d780
commit
4dece043ba
31
vcbuild.bat
31
vcbuild.bat
@ -17,6 +17,7 @@ set target=Build
|
|||||||
set target_arch=x64
|
set target_arch=x64
|
||||||
set target_env=
|
set target_env=
|
||||||
set noprojgen=
|
set noprojgen=
|
||||||
|
set projgen=
|
||||||
set nobuild=
|
set nobuild=
|
||||||
set sign=
|
set sign=
|
||||||
set nosnapshot=
|
set nosnapshot=
|
||||||
@ -67,6 +68,7 @@ if /i "%1"=="x86" set target_arch=x86&goto arg-ok
|
|||||||
if /i "%1"=="x64" set target_arch=x64&goto arg-ok
|
if /i "%1"=="x64" set target_arch=x64&goto arg-ok
|
||||||
if /i "%1"=="vs2017" set target_env=vs2017&goto arg-ok
|
if /i "%1"=="vs2017" set target_env=vs2017&goto arg-ok
|
||||||
if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok
|
if /i "%1"=="noprojgen" set noprojgen=1&goto arg-ok
|
||||||
|
if /i "%1"=="projgen" set projgen=1&goto arg-ok
|
||||||
if /i "%1"=="nobuild" set nobuild=1&goto arg-ok
|
if /i "%1"=="nobuild" set nobuild=1&goto arg-ok
|
||||||
if /i "%1"=="nosign" set "sign="&echo Note: vcbuild no longer signs by default. "nosign" is redundant.&goto arg-ok
|
if /i "%1"=="nosign" set "sign="&echo Note: vcbuild no longer signs by default. "nosign" is redundant.&goto arg-ok
|
||||||
if /i "%1"=="sign" set sign=1&goto arg-ok
|
if /i "%1"=="sign" set sign=1&goto arg-ok
|
||||||
@ -147,6 +149,7 @@ if defined build_release (
|
|||||||
set licensertf=1
|
set licensertf=1
|
||||||
set download_arg="--download=all"
|
set download_arg="--download=all"
|
||||||
set i18n_arg=small-icu
|
set i18n_arg=small-icu
|
||||||
|
set projgen=1
|
||||||
)
|
)
|
||||||
|
|
||||||
:: assign path to node_exe
|
:: assign path to node_exe
|
||||||
@ -252,16 +255,36 @@ goto build-doc
|
|||||||
|
|
||||||
:msbuild-found
|
:msbuild-found
|
||||||
|
|
||||||
|
set project_generated=
|
||||||
:project-gen
|
:project-gen
|
||||||
@rem Skip project generation if requested.
|
@rem Skip project generation if requested.
|
||||||
if defined noprojgen goto msbuild
|
if defined noprojgen goto msbuild
|
||||||
|
if defined projgen goto run-configure
|
||||||
|
if not exist node.sln goto run-configure
|
||||||
|
if not exist .gyp_configure_stamp goto run-configure
|
||||||
|
echo %configure_flags% > .tmp_gyp_configure_stamp
|
||||||
|
where /R . /T *.gyp? >> .tmp_gyp_configure_stamp
|
||||||
|
fc .gyp_configure_stamp .tmp_gyp_configure_stamp >NUL 2>&1
|
||||||
|
if errorlevel 1 goto run-configure
|
||||||
|
|
||||||
|
:skip-configure
|
||||||
|
del .tmp_gyp_configure_stamp
|
||||||
|
echo Reusing solution generated with %configure_flags%
|
||||||
|
goto msbuild
|
||||||
|
|
||||||
|
:run-configure
|
||||||
|
del .tmp_gyp_configure_stamp
|
||||||
|
del .gyp_configure_stamp
|
||||||
@rem Generate the VS project.
|
@rem Generate the VS project.
|
||||||
echo configure %configure_flags%
|
echo configure %configure_flags%
|
||||||
|
echo %configure_flags%> .used_configure_flags
|
||||||
python configure %configure_flags%
|
python configure %configure_flags%
|
||||||
if errorlevel 1 goto create-msvs-files-failed
|
if errorlevel 1 goto create-msvs-files-failed
|
||||||
if not exist node.sln goto create-msvs-files-failed
|
if not exist node.sln goto create-msvs-files-failed
|
||||||
|
set project_generated=1
|
||||||
echo Project files generated.
|
echo Project files generated.
|
||||||
|
echo %configure_flags% > .gyp_configure_stamp
|
||||||
|
where /R . /T *.gyp? >> .gyp_configure_stamp
|
||||||
|
|
||||||
:msbuild
|
:msbuild
|
||||||
@rem Skip build if requested.
|
@rem Skip build if requested.
|
||||||
@ -274,7 +297,10 @@ set "msbplatform=Win32"
|
|||||||
if "%target_arch%"=="x64" set "msbplatform=x64"
|
if "%target_arch%"=="x64" set "msbplatform=x64"
|
||||||
if "%target%"=="Build" if defined no_cctest set target=node
|
if "%target%"=="Build" if defined no_cctest set target=node
|
||||||
msbuild node.sln %msbcpu% /t:%target% /p:Configuration=%config% /p:Platform=%msbplatform% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
|
msbuild node.sln %msbcpu% /t:%target% /p:Configuration=%config% /p:Platform=%msbplatform% /clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal /nologo
|
||||||
if errorlevel 1 goto exit
|
if errorlevel 1 (
|
||||||
|
if not defined project_generated echo Building Node with reused solution failed. To regenerate project files use "vcbuild projgen"
|
||||||
|
goto exit
|
||||||
|
)
|
||||||
if "%target%" == "Clean" goto exit
|
if "%target%" == "Clean" goto exit
|
||||||
|
|
||||||
:sign
|
:sign
|
||||||
@ -626,10 +652,11 @@ goto exit
|
|||||||
|
|
||||||
:create-msvs-files-failed
|
:create-msvs-files-failed
|
||||||
echo Failed to create vc project files.
|
echo Failed to create vc project files.
|
||||||
|
del .used_configure_flags
|
||||||
goto exit
|
goto exit
|
||||||
|
|
||||||
:help
|
: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] [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] [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 Examples:
|
||||||
echo vcbuild.bat : builds release build
|
echo vcbuild.bat : builds release build
|
||||||
echo vcbuild.bat debug : builds debug build
|
echo vcbuild.bat debug : builds debug build
|
||||||
|
Loading…
x
Reference in New Issue
Block a user