mirror of
https://github.com/electron/node-gyp.git
synced 2025-08-15 12:58:19 +02:00
Add support to build node.js with chakracore.
Microsoft's chakracore engine is dependent on Windows SDK, and build tools should know the version installed on user machine. This change adds those dependencies in node-gyp tools. Below is the summary: * Configure msvs_windows_target_platform_version to use the right Windows SDK. * Configure msvs_use_library_dependency_inputs to export symbols correctly (otherwise functions not used by node.exe but might be needed by native addon modules could be optimized away by linker). These changes were originally made in nodejs/node#4765, but as @shigeki mentioned, it was more sensible to send these changes as PR to node-gyp repo. PR-URL: https://github.com/nodejs/node-gyp/pull/873 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
93d7fa83c8
commit
a04ea3051a
3 changed files with 25 additions and 1 deletions
19
addon.gypi
19
addon.gypi
|
@ -1,14 +1,25 @@
|
||||||
{
|
{
|
||||||
|
'variables' : {
|
||||||
|
'node_engine_include_dir%': 'deps/v8/include',
|
||||||
|
},
|
||||||
'target_defaults': {
|
'target_defaults': {
|
||||||
'type': 'loadable_module',
|
'type': 'loadable_module',
|
||||||
'win_delay_load_hook': 'true',
|
'win_delay_load_hook': 'true',
|
||||||
'product_prefix': '',
|
'product_prefix': '',
|
||||||
|
|
||||||
|
'conditions': [
|
||||||
|
[ 'node_engine=="chakracore"', {
|
||||||
|
'variables': {
|
||||||
|
'node_engine_include_dir%': 'deps/chakrashim/include'
|
||||||
|
},
|
||||||
|
}]
|
||||||
|
],
|
||||||
|
|
||||||
'include_dirs': [
|
'include_dirs': [
|
||||||
'<(node_root_dir)/include/node',
|
'<(node_root_dir)/include/node',
|
||||||
'<(node_root_dir)/src',
|
'<(node_root_dir)/src',
|
||||||
'<(node_root_dir)/deps/uv/include',
|
'<(node_root_dir)/deps/uv/include',
|
||||||
'<(node_root_dir)/deps/v8/include'
|
'<(node_root_dir)/<(node_engine_include_dir)'
|
||||||
],
|
],
|
||||||
'defines!': [
|
'defines!': [
|
||||||
'BUILDING_UV_SHARED=1', # Inherited from common.gypi.
|
'BUILDING_UV_SHARED=1', # Inherited from common.gypi.
|
||||||
|
@ -79,6 +90,12 @@
|
||||||
],
|
],
|
||||||
}],
|
}],
|
||||||
[ 'OS=="win"', {
|
[ 'OS=="win"', {
|
||||||
|
'conditions': [
|
||||||
|
['node_engine=="chakracore"', {
|
||||||
|
'library_dirs': [ '<(node_root_dir)/$(ConfigurationName)' ],
|
||||||
|
'libraries': [ '<@(node_engine_libs)' ],
|
||||||
|
}],
|
||||||
|
],
|
||||||
'libraries': [
|
'libraries': [
|
||||||
'-lkernel32.lib',
|
'-lkernel32.lib',
|
||||||
'-luser32.lib',
|
'-luser32.lib',
|
||||||
|
|
|
@ -338,6 +338,8 @@ def _BuildCommandLineForRuleRaw(spec, cmd, cygwin_shell, has_input_path,
|
||||||
command = ['type']
|
command = ['type']
|
||||||
else:
|
else:
|
||||||
command = [cmd[0].replace('/', '\\')]
|
command = [cmd[0].replace('/', '\\')]
|
||||||
|
if quote_cmd:
|
||||||
|
command = ['"%s"' % i for i in command]
|
||||||
# Add call before command to ensure that commands can be tied together one
|
# Add call before command to ensure that commands can be tied together one
|
||||||
# after the other without aborting in Incredibuild, since IB makes a bat
|
# after the other without aborting in Incredibuild, since IB makes a bat
|
||||||
# file out of the raw command string, and some commands (like python) are
|
# file out of the raw command string, and some commands (like python) are
|
||||||
|
@ -3209,6 +3211,9 @@ def _GetMSBuildProjectReferences(project):
|
||||||
['ReferenceOutputAssembly', 'false']
|
['ReferenceOutputAssembly', 'false']
|
||||||
]
|
]
|
||||||
for config in dependency.spec.get('configurations', {}).itervalues():
|
for config in dependency.spec.get('configurations', {}).itervalues():
|
||||||
|
if config.get('msvs_use_library_dependency_inputs', 0):
|
||||||
|
project_ref.append(['UseLibraryDependencyInputs', 'true'])
|
||||||
|
break
|
||||||
# If it's disabled in any config, turn it off in the reference.
|
# If it's disabled in any config, turn it off in the reference.
|
||||||
if config.get('msvs_2010_disable_uldi_when_referenced', 0):
|
if config.get('msvs_2010_disable_uldi_when_referenced', 0):
|
||||||
project_ref.append(['UseLibraryDependencyInputs', 'false'])
|
project_ref.append(['UseLibraryDependencyInputs', 'false'])
|
||||||
|
|
|
@ -272,6 +272,8 @@ function configure (gyp, argv, callback) {
|
||||||
argv.push('-Dnode_gyp_dir=' + nodeGypDir)
|
argv.push('-Dnode_gyp_dir=' + nodeGypDir)
|
||||||
argv.push('-Dnode_lib_file=' + release.name + '.lib')
|
argv.push('-Dnode_lib_file=' + release.name + '.lib')
|
||||||
argv.push('-Dmodule_root_dir=' + process.cwd())
|
argv.push('-Dmodule_root_dir=' + process.cwd())
|
||||||
|
argv.push('-Dnode_engine=' +
|
||||||
|
(gyp.opts.node_engine || process.jsEngine || 'v8'))
|
||||||
argv.push('--depth=.')
|
argv.push('--depth=.')
|
||||||
argv.push('--no-parallel')
|
argv.push('--no-parallel')
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue