diff --git a/configure.py b/configure.py index 50994c8c2772e2..c2361fb03d1cd8 100755 --- a/configure.py +++ b/configure.py @@ -355,6 +355,27 @@ dest='shared_openssl_libpath', help='a directory to search for the shared OpenSSL DLLs') +shared_optgroup.add_argument('--shared-uvwasi', + action='store_true', + dest='shared_uvwasi', + help='linked to a shared uvwasi DLL instead of static linking') + +shared_optgroup.add_argument('--shared-uvwasi-includes', + action='store', + dest='shared_uvwasi_includes', + help='directory containing uvwasi header files') + +shared_optgroup.add_argument('--shared-uvwasi-libname', + action='store', + dest='shared_uvwasi_libname', + default='uvwasi', + help='alternative lib name to link to [default: %default]') + +shared_optgroup.add_argument('--shared-uvwasi-libpath', + action='store', + dest='shared_uvwasi_libpath', + help='a directory to search for the shared uvwasi DLL') + shared_optgroup.add_argument('--shared-zlib', action='store_true', dest='shared_zlib', @@ -1894,6 +1915,7 @@ def make_bin_override(): configure_library('brotli', output, pkgname=['libbrotlidec', 'libbrotlienc']) configure_library('cares', output, pkgname='libcares') configure_library('nghttp2', output, pkgname='libnghttp2') +configure_library('uvwasi', output, pkgname='libuvwasi') configure_v8(output) configure_openssl(output) configure_intl(output) diff --git a/node.gyp b/node.gyp index 643c8a43c6ff9c..204826abb01c1b 100644 --- a/node.gyp +++ b/node.gyp @@ -20,6 +20,7 @@ 'node_shared_http_parser%': 'false', 'node_shared_cares%': 'false', 'node_shared_libuv%': 'false', + 'node_shared_uvwasi%': 'false', 'node_shared_nghttp2%': 'false', 'node_shared_ngtcp2%': 'false', 'node_shared_nghttp3%': 'false', @@ -390,7 +391,14 @@ 'dependencies': [ 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', + ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'dependencies': [ + 'deps/uvwasi/uvwasi.gyp:uvwasi' + ], + }], ], 'msvs_settings': { @@ -573,7 +581,14 @@ ], 'dependencies': [ 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', + ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'dependencies': [ + 'deps/uvwasi/uvwasi.gyp:uvwasi' + ], + }], ], 'sources': [ @@ -1267,11 +1282,19 @@ 'dependencies': [ '<(node_lib_target_name)', 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', 'node_dtrace_header', 'node_dtrace_ustack', 'node_dtrace_provider', ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'dependencies': [ + 'deps/uvwasi/uvwasi.gyp:uvwasi' + ], + }], + ], + 'includes': [ 'node.gypi' ], @@ -1281,9 +1304,17 @@ 'deps/v8/include', 'deps/cares/include', 'deps/uv/include', - 'deps/uvwasi/include', 'test/cctest', ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'include_dirs': [ + 'deps/uvwasi/include', + ], + }], + ], + 'defines': [ 'NODE_ARCH="<(target_arch)"', 'NODE_PLATFORM="<(OS)"', @@ -1311,12 +1342,19 @@ 'dependencies': [ '<(node_lib_target_name)', 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', 'node_dtrace_header', 'node_dtrace_ustack', 'node_dtrace_provider', ], + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'dependencies': [ + 'deps/uvwasi/uvwasi.gyp:uvwasi' + ], + }], + ], + 'includes': [ 'node.gypi' ], @@ -1327,10 +1365,17 @@ 'deps/v8/include', 'deps/cares/include', 'deps/uv/include', - 'deps/uvwasi/include', 'test/cctest', ], + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'include_dirs': [ + 'deps/uvwasi/include', + ], + }], + ], + 'defines': [ 'NODE_ARCH="<(target_arch)"', 'NODE_PLATFORM="<(OS)"', @@ -1419,12 +1464,19 @@ 'dependencies': [ '<(node_lib_target_name)', 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', 'node_dtrace_header', 'node_dtrace_ustack', 'node_dtrace_provider', ], + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'dependencies': [ + 'deps/uvwasi/uvwasi.gyp:uvwasi' + ], + }], + ], + 'includes': [ 'node.gypi' ], @@ -1435,10 +1487,17 @@ 'deps/v8/include', 'deps/cares/include', 'deps/uv/include', - 'deps/uvwasi/include', 'test/embedding', ], + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'include_dirs': [ + 'deps/uvwasi/include', + ], + }], + ], + 'sources': [ 'src/node_snapshot_stub.cc', 'src/node_code_cache_stub.cc', @@ -1481,7 +1540,14 @@ 'dependencies': [ '<(node_lib_target_name)', 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', + ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'dependencies': [ + 'deps/uvwasi/uvwasi.gyp:uvwasi' + ], + }], ], 'includes': [ @@ -1494,7 +1560,14 @@ 'deps/v8/include', 'deps/cares/include', 'deps/uv/include', - 'deps/uvwasi/include', + ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'include_dirs': [ + 'deps/uvwasi/include', + ], + }], ], 'defines': [ @@ -1541,7 +1614,14 @@ 'dependencies': [ '<(node_lib_target_name)', 'deps/histogram/histogram.gyp:histogram', - 'deps/uvwasi/uvwasi.gyp:uvwasi', + ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'dependencies': [ + 'deps/uvwasi/uvwasi.gyp:uvwasi' + ], + }], ], 'includes': [ @@ -1554,7 +1634,14 @@ 'deps/v8/include', 'deps/cares/include', 'deps/uv/include', - 'deps/uvwasi/include', + ], + + 'conditions': [ + [ 'node_shared_uvwasi=="false"', { + 'include_dirs': [ + 'deps/uvwasi/include', + ], + }], ], 'defines': [ 'NODE_WANT_INTERNALS=1' ],