build: allow linking against system http_parser
authorStephen Gallagher <sgallagh@redhat.com>
Tue, 23 Oct 2012 13:01:26 +0000 (09:01 -0400)
committerBen Noordhuis <info@bnoordhuis.nl>
Mon, 5 Nov 2012 23:18:35 +0000 (00:18 +0100)
configure
doc/api/process.markdown
node.gyp

index bd6e0cd..8562033 100755 (executable)
--- a/configure
+++ b/configure
@@ -131,6 +131,26 @@ parser.add_option("--shared-zlib-libname",
     dest="shared_zlib_libname",
     help="Alternative lib name to link to (default: 'z')")
 
+parser.add_option("--shared-http-parser",
+    action="store_true",
+    dest="shared_http_parser",
+    help="Link to a shared http_parser DLL instead of static linking")
+
+parser.add_option("--shared-http-parser-includes",
+    action="store",
+    dest="shared_http_parser_includes",
+    help="Directory containing http_parser header files")
+
+parser.add_option("--shared-http-parser-libpath",
+    action="store",
+    dest="shared_http_parser_libpath",
+    help="A directory to search for the shared http_parser DLL")
+
+parser.add_option("--shared-http-parser-libname",
+    action="store",
+    dest="shared_http_parser_libname",
+    help="Alternative lib name to link to (default: 'http_parser')")
+
 parser.add_option("--with-dtrace",
     action="store_true",
     dest="with_dtrace",
@@ -422,6 +442,20 @@ def configure_libz(o):
     o['include_dirs'] += [options.shared_zlib_includes]
 
 
+def configure_http_parser(o):
+    o['variables']['node_shared_http_parser'] = b(options.shared_http_parser)
+
+    # assume shared http_parser if one of these is set?
+    if options.shared_http_parser_libpath:
+        o['libraries'] += ['-L%s' % options.shared_http_parser_libpath]
+    if options.shared_http_parser_libname:
+        o['libraries'] += ['-l%s' % options.shared_http_parser_libname]
+    elif options.shared_http_parser:
+        o['libraries'] += ['-lhttp_parser']
+    if options.shared_http_parser_includes:
+        o['include_dirs'] += [options.shared_http_parser_includes]
+
+
 def configure_v8(o):
   o['variables']['v8_use_snapshot'] = b(not options.without_snapshot)
   o['variables']['node_shared_v8'] = b(options.shared_v8)
@@ -475,6 +509,7 @@ output = {
 
 configure_node(output)
 configure_libz(output)
+configure_http_parser(output)
 configure_v8(output)
 configure_openssl(output)
 
index d861260..41b163a 100644 (file)
@@ -299,6 +299,7 @@ An example of the possible output looks like:
        { host_arch: 'x64',
          node_install_npm: 'true',
          node_prefix: '',
+         node_shared_http_parser: 'false',
          node_shared_v8: 'false',
          node_shared_zlib: 'false',
          node_use_dtrace: 'false',
index cefa502..60b5808 100644 (file)
--- a/node.gyp
+++ b/node.gyp
@@ -8,6 +8,7 @@
     'node_use_etw%': 'false',
     'node_shared_v8%': 'false',
     'node_shared_zlib%': 'false',
+    'node_shared_http_parser%': 'false',
     'node_use_openssl%': 'true',
     'node_use_systemtap%': 'false',
     'node_shared_openssl%': 'false',
@@ -59,7 +60,6 @@
 
       'dependencies': [
         'deps/cares/cares.gyp:cares',
-        'deps/http_parser/http_parser.gyp:http_parser',
         'deps/uv/uv.gyp:libuv',
         'node_js2c#host',
       ],
           'dependencies': [ 'deps/zlib/zlib.gyp:zlib' ],
         }],
 
+        [ 'node_shared_http_parser=="false"', {
+          'dependencies': [ 'deps/http_parser/http_parser.gyp:http_parser' ],
+        }],
+
         [ 'OS=="win"', {
           'sources': [
             'src/res/node.rc',