|
8 | 8 | # will be used to populate process.config.variables. |
9 | 9 |
|
10 | 10 | import argparse |
| 11 | +import json |
11 | 12 | import re |
12 | 13 | import os |
13 | 14 | import subprocess |
|
16 | 17 | sys.path.append(os.path.dirname(__file__)) |
17 | 18 | import getnapibuildversion |
18 | 19 |
|
19 | | -# The defines bellow must include all things from the external_v8_defines list |
20 | | -# in v8/BUILD.gn. |
21 | | -# TODO(zcbenz): Import from v8_features.json once this change gets into Node: |
22 | | -# https://chromium-review.googlesource.com/c/v8/v8/+/5040612 |
23 | | -V8_FEATURE_DEFINES = { |
24 | | - 'v8_enable_v8_checks': 'V8_ENABLE_CHECKS', |
25 | | - 'v8_enable_pointer_compression': 'V8_COMPRESS_POINTERS', |
26 | | - 'v8_enable_pointer_compression_shared_cage': 'V8_COMPRESS_POINTERS_IN_SHARED_CAGE', |
27 | | - 'v8_enable_31bit_smis_on_64bit_arch': 'V8_31BIT_SMIS_ON_64BIT_ARCH', |
28 | | - 'v8_enable_zone_compression': 'V8_COMPRESS_ZONES', |
29 | | - 'v8_enable_sandbox': 'V8_ENABLE_SANDBOX', |
30 | | - 'v8_deprecation_warnings': 'V8_DEPRECATION_WARNINGS', |
31 | | - 'v8_imminent_deprecation_warnings': 'V8_IMMINENT_DEPRECATION_WARNINGS', |
32 | | - 'v8_use_perfetto': 'V8_USE_PERFETTO', |
33 | | - 'v8_enable_map_packing': 'V8_MAP_PACKING', |
34 | | - 'tsan': 'V8_IS_TSAN', |
35 | | - 'v8_enable_conservative_stack_scanning': 'V8_ENABLE_CONSERVATIVE_STACK_SCANNING', |
36 | | - 'v8_enable_direct_local': 'V8_ENABLE_DIRECT_LOCAL', |
37 | | -} |
38 | | - |
39 | 20 | # Regex used for parsing results of "gn args". |
40 | 21 | GN_RE = re.compile(r'(\w+)\s+=\s+(.*?)$', re.MULTILINE) |
41 | 22 |
|
@@ -60,15 +41,11 @@ def get_gn_config(out_dir): |
60 | 41 | return config |
61 | 42 |
|
62 | 43 | def get_v8_config(out_dir, node_gn_path): |
63 | | - # For args that have default values in V8's GN configurations, we can not rely |
64 | | - # on the values printed by "gn args", because most of them would be empty |
65 | | - # strings, and the actual value would depend on the logics in v8/BUILD.gn. |
66 | | - # So we print out the defines and deduce the feature from them instead. |
67 | | - node_defines = subprocess.check_output( |
68 | | - [GN, 'desc', '-C', out_dir, node_gn_path + ":libnode", 'defines']).decode().split('\n') |
69 | | - v8_config = {} |
70 | | - for feature, define in V8_FEATURE_DEFINES.items(): |
71 | | - v8_config[feature] = bool_to_number(define in node_defines) |
| 44 | + with open(os.path.join(out_dir, 'v8_features.json')) as f: |
| 45 | + v8_config = json.load(f) |
| 46 | + for key, value in v8_config.items(): |
| 47 | + if isinstance(value, bool): |
| 48 | + v8_config[key] = bool_to_number(value) |
72 | 49 | return v8_config |
73 | 50 |
|
74 | 51 | def translate_config(out_dir, config, v8_config): |
@@ -90,8 +67,6 @@ def translate_config(out_dir, config, v8_config): |
90 | 67 | 'node_use_openssl': config['node_use_openssl'], |
91 | 68 | 'node_use_node_code_cache': config['node_use_node_code_cache'], |
92 | 69 | 'node_use_node_snapshot': config['node_use_node_snapshot'], |
93 | | - 'v8_enable_i18n_support': |
94 | | - bool_string_to_number(config['v8_enable_i18n_support']), |
95 | 70 | 'v8_enable_inspector': # this is actually a node misnomer |
96 | 71 | bool_string_to_number(config['node_enable_inspector']), |
97 | 72 | 'shlib_suffix': 'dylib' if sys.platform == 'darwin' else 'so', |
|