diff --git a/configure b/configure index e30fce5e215..03a889d04a4 100755 --- a/configure +++ b/configure @@ -202,6 +202,27 @@ shared_optgroup.add_option('--shared-zlib-libpath', dest='shared_zlib_libpath', help='a directory to search for the shared zlib DLL') +shared_optgroup.add_option('--shared-cares', + action='store_true', + dest='shared_libcares', + help='link to a shared cares DLL instead of static linking') + +shared_optgroup.add_option('--shared-cares-includes', + action='store', + dest='shared_libcares_includes', + help='directory containing cares header files') + +shared_optgroup.add_option('--shared-cares-libname', + action='store', + dest='shared_libcares_libname', + default='cares', + help='alternative lib name to link to [default: %default]') + +shared_optgroup.add_option('--shared-cares-libpath', + action='store', + dest='shared_libcares_libpath', + help='a directory to search for the shared cares DLL') + parser.add_option_group(shared_optgroup) parser.add_option('--systemtap-includes', @@ -1125,6 +1146,10 @@ configure_node(output) configure_library('zlib', output) configure_library('http_parser', output) configure_library('libuv', output) +configure_library('libcares', output) +# stay backwards compatible with shared cares builds +output['variables']['node_shared_cares'] = \ + output['variables'].pop('node_shared_libcares') configure_v8(output) configure_openssl(output) configure_intl(output) diff --git a/node.gyp b/node.gyp index bbd814e7b0d..0e9fe40c419 100644 --- a/node.gyp +++ b/node.gyp @@ -8,6 +8,7 @@ 'node_no_browser_globals%': 'false', 'node_shared_zlib%': 'false', 'node_shared_http_parser%': 'false', + 'node_shared_cares%': 'false', 'node_shared_libuv%': 'false', 'node_use_openssl%': 'true', 'node_shared_openssl%': 'false', @@ -107,7 +108,6 @@ 'dependencies': [ 'node_js2c#host', - 'deps/cares/cares.gyp:cares', 'deps/v8/tools/gyp/v8.gyp:v8', 'deps/v8/tools/gyp/v8.gyp:v8_libplatform' ], @@ -391,6 +391,10 @@ 'dependencies': [ 'deps/http_parser/http_parser.gyp:http_parser' ], }], + [ 'node_shared_cares=="false"', { + 'dependencies': [ 'deps/cares/cares.gyp:cares' ], + }], + [ 'node_shared_libuv=="false"', { 'dependencies': [ 'deps/uv/uv.gyp:libuv' ], }], diff --git a/tools/install.py b/tools/install.py index cb86c65699d..6c3570fa759 100755 --- a/tools/install.py +++ b/tools/install.py @@ -164,9 +164,11 @@ def headers(action): if sys.platform.startswith('aix'): action(['out/Release/node.exp'], 'include/node/') - subdir_files('deps/cares/include', 'include/node/', action) subdir_files('deps/v8/include', 'include/node/', action) + if 'false' == variables.get('node_shared_cares'): + subdir_files('deps/cares/include', 'include/node/', action) + if 'false' == variables.get('node_shared_libuv'): subdir_files('deps/uv/include', 'include/node/', action)