mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
configure: --v8-options option
Introduce a way to set some v8 flags at compile time, the values should be separated by comma.
This commit is contained in:
parent
6d15b163b0
commit
b55c9d68aa
12
configure
vendored
12
configure
vendored
@ -204,6 +204,12 @@ parser.add_option('--tag',
|
||||
dest='tag',
|
||||
help='custom build tag')
|
||||
|
||||
parser.add_option('--v8-options',
|
||||
action='store',
|
||||
dest='v8_options',
|
||||
help='v8 options to pass, see `node --v8-options` for examples. '
|
||||
'The flags should be separated by a comma')
|
||||
|
||||
parser.add_option('--with-arm-float-abi',
|
||||
action='store',
|
||||
dest='arm_float_abi',
|
||||
@ -513,6 +519,12 @@ def configure_node(o):
|
||||
else:
|
||||
o['variables']['node_tag'] = ''
|
||||
|
||||
if options.v8_options:
|
||||
opts = options.v8_options.split(',')
|
||||
o['variables']['node_v8_options'] = '"' + '","'.join(opts) + '"'
|
||||
else:
|
||||
o['variables']['node_v8_options'] = ''
|
||||
|
||||
|
||||
def configure_libz(o):
|
||||
o['variables']['node_shared_zlib'] = b(options.shared_zlib)
|
||||
|
2
node.gyp
2
node.gyp
@ -13,6 +13,7 @@
|
||||
'node_use_openssl%': 'true',
|
||||
'node_shared_openssl%': 'false',
|
||||
'node_use_mdb%': 'false',
|
||||
'node_v8_options%': '',
|
||||
'library_files': [
|
||||
'src/node.js',
|
||||
'lib/_debugger.js',
|
||||
@ -158,6 +159,7 @@
|
||||
'ARCH="<(target_arch)"',
|
||||
'PLATFORM="<(OS)"',
|
||||
'NODE_TAG="<(node_tag)"',
|
||||
'NODE_V8_OPTIONS=<(node_v8_options)',
|
||||
],
|
||||
|
||||
'conditions': [
|
||||
|
22
src/node.cc
22
src/node.cc
@ -3062,6 +3062,26 @@ static void ParseArgs(int* argc,
|
||||
}
|
||||
|
||||
|
||||
static void SetCompileTimeV8Options(const char** argv) {
|
||||
#ifdef NODE_V8_OPTIONS
|
||||
int v8_argc;
|
||||
static const char* v8_argv[] = { NULL, NODE_V8_OPTIONS };
|
||||
if (ARRAY_SIZE(v8_argv) == 1)
|
||||
return;
|
||||
|
||||
v8_argv[0] = argv[0];
|
||||
v8_argc = ARRAY_SIZE(v8_argv);
|
||||
V8::SetFlagsFromCommandLine(&v8_argc, const_cast<char**>(v8_argv), true);
|
||||
|
||||
// Anything that's still in v8_argv is not a V8 or a node option.
|
||||
for (int i = 1; i < v8_argc; i++)
|
||||
fprintf(stderr, "%s: bad option: %s\n", argv[0], v8_argv[i]);
|
||||
if (v8_argc > 1)
|
||||
exit(9);
|
||||
#endif // NODE_V8_OPTIONS
|
||||
}
|
||||
|
||||
|
||||
// Called from V8 Debug Agent TCP thread.
|
||||
static void DispatchMessagesDebugAgentCallback() {
|
||||
uv_async_send(&dispatch_debug_messages_async);
|
||||
@ -3355,6 +3375,8 @@ void Init(int* argc,
|
||||
DispatchDebugMessagesAsyncCallback);
|
||||
uv_unref(reinterpret_cast<uv_handle_t*>(&dispatch_debug_messages_async));
|
||||
|
||||
SetCompileTimeV8Options(argv);
|
||||
|
||||
// Parse a few arguments which are specific to Node.
|
||||
int v8_argc;
|
||||
const char** v8_argv;
|
||||
|
@ -274,7 +274,11 @@
|
||||
delete NativeModule._source.config;
|
||||
|
||||
// strip the gyp comment line at the beginning
|
||||
config = config.split('\n').slice(1).join('\n').replace(/'/g, '"');
|
||||
config = config.split('\n')
|
||||
.slice(1)
|
||||
.join('\n')
|
||||
.replace(/"/g, '\\"')
|
||||
.replace(/'/g, '"');
|
||||
|
||||
process.config = JSON.parse(config, function(key, value) {
|
||||
if (value === 'true') return true;
|
||||
|
Loading…
Reference in New Issue
Block a user