build: configure --shared

Add configure flag for building a shared library that can be
embedded in other applications (like Electron). Add flags
--without-bundled-v8 and --without-v8-platform to control V8
dependencies used.

PR-URL: https://github.com/nodejs/node/pull/6994
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Fedor Indutny <fedor@indutny.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
This commit is contained in:
Stefan Budeanu committed 2016-06-28 17:48:22 -04:00
1 parent 86e07b7c24
commit 410296c37a
9 files changed
+212 -36

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
from __future__ import print_function
import os
import re
def get_version():
node_version_h = os.path.join(
os.path.dirname(__file__),
'..',
'src',
'node_version.h')
f = open(node_version_h)
regex = '^#define NODE_MODULE_VERSION [0-9]+'
for line in f:
if re.match(regex, line):
major = line.split()[2]
return major
raise Exception('Could not find pattern matching %s' % regex)
if __name__ == '__main__':
print(get_version())
+9 -5
View File
@@ -1,16 +1,20 @@
import os,re
import os
import re
node_version_h = os.path.join(os.path.dirname(__file__), '..', 'src',
node_version_h = os.path.join(
os.path.dirname(__file__),
'..',
'src',
'node_version.h')
f = open(node_version_h)
for line in f:
if re.match('#define NODE_MAJOR_VERSION', line):
if re.match('^#define NODE_MAJOR_VERSION', line):
major = line.split()[2]
if re.match('#define NODE_MINOR_VERSION', line):
if re.match('^#define NODE_MINOR_VERSION', line):
minor = line.split()[2]
if re.match('#define NODE_PATCH_VERSION', line):
if re.match('^#define NODE_PATCH_VERSION', line):
patch = line.split()[2]
print '%(major)s.%(minor)s.%(patch)s'% locals()
+16 -2
View File
@@ -6,6 +6,7 @@ import os
import re
import shutil
import sys
from getmoduleversion import get_version
# set at init time
node_prefix = '/usr/local' # PREFIX variable from Makefile
@@ -107,9 +108,22 @@ def subdir_files(path, dest, action):
def files(action):
is_windows = sys.platform == 'win32'
output_file = 'node'
output_prefix = 'out/Release/'
exeext = '.exe' if is_windows else ''
action(['out/Release/node' + exeext], 'bin/node' + exeext)
if 'false' == variables.get('node_shared'):
if is_windows:
output_file += '.exe'
else:
if is_windows:
output_file += '.dll'
else:
# GYP will output to lib.target, this is hardcoded in its source,
# see the _InstallableTargetInstallPath function.
output_prefix += 'lib.target/'
output_file = 'lib' + output_file + '.so.' + get_version()
action([output_prefix + output_file], 'bin/' + output_file)
if 'true' == variables.get('node_use_dtrace'):
action(['out/Release/node.d'], 'lib/dtrace/node.d')