10411041 default = None ,
10421042 help = 'Use ccache for compiling on Windows. ' )
10431043
1044+ # Rust toolchain options
1045+ parser .add_argument ('--rust-toolchain-library-path' ,
1046+ action = 'store' ,
1047+ dest = 'rust_toolchain_library_path' ,
1048+ default = None ,
1049+ help = 'Path to Rust toolchain libraries to link against when building ' +
1050+ 'Node.js with Temporal support.' )
1051+
10441052(options , args ) = parser .parse_known_args ()
10451053
10461054# Expand ~ in the install prefix now, it gets written to multiple files.
@@ -1440,8 +1448,8 @@ def host_arch_win():
14401448 return matchup .get (arch , 'x64' )
14411449
14421450def set_configuration_variable (configs , name , release = None , debug = None ):
1443- configs ['Release' ][name ] = release
1444- configs ['Debug' ][name ] = debug
1451+ configs ['Release' ]['variables' ][ name ] = release
1452+ configs ['Debug' ]['variables' ][ name ] = debug
14451453
14461454def configure_arm (o ):
14471455 if options .arm_float_abi :
@@ -1772,6 +1780,12 @@ def configure_library(lib, output, pkgname=None):
17721780 output ['libraries' ] += pkg_libs .split ()
17731781
17741782
1783+ def configure_rust (o , configs ):
1784+ set_configuration_variable (configs , 'cargo_build_mode' , release = 'release' , debug = 'debug' )
1785+ set_configuration_variable (configs , 'cargo_build_flags' , release = ['--release' ], debug = [])
1786+ o ['variables' ]['rust_toolchain_library_path' ] = options .rust_toolchain_library_path or ''
1787+
1788+
17751789def configure_v8 (o , configs ):
17761790 set_configuration_variable (configs , 'v8_enable_v8_checks' , release = 1 , debug = 0 )
17771791
@@ -2325,6 +2339,7 @@ def make_bin_override():
23252339 'libraries' : [],
23262340 'defines' : [],
23272341 'cflags' : [],
2342+ 'conditions' : [],
23282343}
23292344configurations = {
23302345 'Release' : { 'variables' : {} },
@@ -2365,6 +2380,7 @@ def make_bin_override():
23652380configure_static (output )
23662381configure_inspector (output )
23672382configure_section_file (output )
2383+ configure_rust (output , configurations )
23682384
23692385# remove builtins that have been disabled
23702386if options .without_amaro :
@@ -2387,6 +2403,17 @@ def make_bin_override():
23872403variables = output ['variables' ]
23882404del output ['variables' ]
23892405
2406+ # move configurations[*]['variables'] to conditions variables
2407+ config_release_vars = configurations ['Release' ]['variables' ]
2408+ del configurations ['Release' ]['variables' ]
2409+ config_debug_vars = configurations ['Debug' ]['variables' ]
2410+ del configurations ['Debug' ]['variables' ]
2411+ output ['conditions' ].append (['build_type=="Release"' , {
2412+ 'variables' : config_release_vars ,
2413+ }, {
2414+ 'variables' : config_debug_vars ,
2415+ }])
2416+
23902417# make_global_settings should be a root level element too
23912418if 'make_global_settings' in output :
23922419 make_global_settings = output ['make_global_settings' ]
@@ -2406,8 +2433,9 @@ def make_bin_override():
24062433
24072434print_verbose (output )
24082435
2436+ # Dump as JSON to allow js2c.cc read it as a simple json file.
24092437write ('config.gypi' , do_not_edit +
2410- pprint . pformat (output , indent = 2 , width = 128 ) + '\n ' )
2438+ json . dumps (output , indent = 2 ) + '\n ' )
24112439
24122440write ('config.status' , '#!/bin/sh\n set -x\n exec ./configure ' +
24132441 ' ' .join ([shlex .quote (arg ) for arg in original_argv ]) + '\n ' )
0 commit comments