mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
76 lines
2.7 KiB
Python
76 lines
2.7 KiB
Python
|
#!/usr/bin/env python3
|
||
|
# Copyright (c) 2013-2019 GitHub Inc.
|
||
|
# Copyright 2019 the V8 project authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
# This script reads the configurations of GN and outputs a config.gypi file that
|
||
|
# will be used to populate process.config.variables.
|
||
|
|
||
|
import re
|
||
|
import os
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
root_dir = os.path.dirname(os.path.dirname(__file__))
|
||
|
sys.path.append(os.path.join(root_dir, 'node', 'tools'))
|
||
|
import getmoduleversion
|
||
|
import getnapibuildversion
|
||
|
|
||
|
GN_RE = re.compile(r'(\w+)\s+=\s+(.*?)$', re.MULTILINE)
|
||
|
|
||
|
def bool_string_to_number(v):
|
||
|
return 1 if v == 'true' else 0
|
||
|
|
||
|
def translate_config(config):
|
||
|
return {
|
||
|
'target_defaults': {
|
||
|
'default_configuration':
|
||
|
'Debug' if config['is_debug'] == 'true' else 'Release',
|
||
|
},
|
||
|
'variables': {
|
||
|
'asan': bool_string_to_number(config['is_asan']),
|
||
|
'llvm_version': 13,
|
||
|
'napi_build_version': config['napi_build_version'],
|
||
|
'node_builtin_shareable_builtins':
|
||
|
eval(config['node_builtin_shareable_builtins']),
|
||
|
'node_module_version': int(config['node_module_version']),
|
||
|
'node_shared': bool_string_to_number(config['is_component_build']),
|
||
|
'node_use_openssl': config['node_use_openssl'],
|
||
|
'node_use_node_code_cache': config['node_use_node_code_cache'],
|
||
|
'node_use_node_snapshot': config['node_use_node_snapshot'],
|
||
|
'v8_enable_31bit_smis_on_64bit_arch':
|
||
|
bool_string_to_number(config['v8_enable_31bit_smis_on_64bit_arch']),
|
||
|
'v8_enable_pointer_compression':
|
||
|
bool_string_to_number(config['v8_enable_pointer_compression']),
|
||
|
'v8_enable_i18n_support':
|
||
|
bool_string_to_number(config['v8_enable_i18n_support']),
|
||
|
'v8_enable_inspector': # this is actually a node misnomer
|
||
|
bool_string_to_number(config['node_enable_inspector']),
|
||
|
'shlib_suffix': 'dylib' if sys.platform == 'darwin' else 'so',
|
||
|
}
|
||
|
}
|
||
|
|
||
|
def main(gn_out_dir, output_file, depfile):
|
||
|
# Get GN config and parse into a dictionary.
|
||
|
if sys.platform == 'win32':
|
||
|
gn = 'gn.exe'
|
||
|
else:
|
||
|
gn = 'gn'
|
||
|
gnconfig = subprocess.check_output(
|
||
|
[gn, 'args', '--list', '--short', '-C', gn_out_dir])
|
||
|
config = dict(re.findall(GN_RE, gnconfig.decode('utf-8')))
|
||
|
config['node_module_version'] = getmoduleversion.get_version()
|
||
|
config['napi_build_version'] = getnapibuildversion.get_napi_version()
|
||
|
|
||
|
# Write output.
|
||
|
with open(output_file, 'w') as f:
|
||
|
f.write(repr(translate_config(config)))
|
||
|
|
||
|
# Write depfile. Force regenerating config.gypi when GN configs change.
|
||
|
with open(depfile, 'w') as f:
|
||
|
f.write('%s: %s '%(output_file, 'build.ninja'))
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main(sys.argv[1], sys.argv[2], sys.argv[3])
|