Skip to content

Commit

Permalink
build: windows sharedlib support
Browse files Browse the repository at this point in the history
Added "dll" option to vcbuild.bat
Ensure that Unix SO name is not used on Windows (i.e. produce a .dll file)
Ensure that Node and its V8 dependency link against the Visual C++ Runtime
dynamically.
Requires backported V8 patch

Ref: nodejs#7802

PR-URL: nodejs#7487
Reviewed-By: Alexis Campailla <alexis@janeasystems.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
  • Loading branch information
Stewart Addison committed Nov 16, 2016
1 parent f87ee23 commit c5f3e4e
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
29 changes: 28 additions & 1 deletion common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,20 @@
['OS == "android"', {
'cflags': [ '-fPIE' ],
'ldflags': [ '-fPIE', '-pie' ]
}],
['node_shared=="true"', {
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeLibrary': 3 # MultiThreadedDebugDLL (/MDd)
}
}
}],
['node_shared=="false"', {
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeLibrary': 1 # MultiThreadedDebug (/MTd)
}
}
}]
],
'msvs_settings': {
Expand Down Expand Up @@ -116,11 +130,24 @@
['OS == "android"', {
'cflags': [ '-fPIE' ],
'ldflags': [ '-fPIE', '-pie' ]
}],
['node_shared=="true"', {
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeLibrary': 2 # MultiThreadedDLL (/MD)
}
}
}],
['node_shared=="false"', {
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeLibrary': 0 # MultiThreaded (/MT)
}
}
}]
],
'msvs_settings': {
'VCCLCompilerTool': {
'RuntimeLibrary': 0, # static release
'Optimization': 3, # /Ox, full optimization
'FavorSizeOrSpeed': 1, # /Ot, favour speed over size
'InlineFunctionExpansion': 2, # /Ob2, inline anything eligible
Expand Down
2 changes: 1 addition & 1 deletion node.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@
'NODE_SHARED_MODE',
],
'conditions': [
[ 'node_module_version!=""', {
[ 'node_module_version!="" and OS!="win"', {
'product_extension': 'so.<(node_module_version)',
}]
],
Expand Down
3 changes: 3 additions & 0 deletions vcbuild.bat
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ set build_release=
set configure_flags=
set build_addons=
set enable_vtune_profiling=
set dll=

:next-arg
if "%1"=="" goto args-done
Expand Down Expand Up @@ -76,6 +77,7 @@ if /i "%1"=="intl-none" set i18n_arg=%1&goto arg-ok
if /i "%1"=="download-all" set download_arg="--download=all"&goto arg-ok
if /i "%1"=="ignore-flaky" set test_args=%test_args% --flaky-tests=dontcare&goto arg-ok
if /i "%1"=="enable-vtune" set enable_vtune_profiling="--enable-vtune-profiling"&goto arg-ok
if /i "%1"=="dll" set dll=1&goto arg-ok

echo Error: invalid command line option `%1`.
exit /b 1
Expand Down Expand Up @@ -105,6 +107,7 @@ if defined noetw set configure_flags=%configure_flags% --without-etw& set noetw_
if defined noperfctr set configure_flags=%configure_flags% --without-perfctr& set noperfctr_msi_arg=/p:NoPerfCtr=1
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 dll set configure_flags=%configure_flags% --shared

if "%i18n_arg%"=="full-icu" set configure_flags=%configure_flags% --with-intl=full-icu
if "%i18n_arg%"=="small-icu" set configure_flags=%configure_flags% --with-intl=small-icu
Expand Down

0 comments on commit c5f3e4e

Please sign in to comment.