mirror of
https://github.com/electron/node-gyp.git
synced 2025-08-15 12:58:19 +02:00

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>
133 lines
3.7 KiB
Python
133 lines
3.7 KiB
Python
{
|
|
'variables' : {
|
|
'node_engine_include_dir%': 'deps/v8/include',
|
|
},
|
|
'target_defaults': {
|
|
'type': 'loadable_module',
|
|
'win_delay_load_hook': 'true',
|
|
'product_prefix': '',
|
|
|
|
'conditions': [
|
|
[ 'node_engine=="chakracore"', {
|
|
'variables': {
|
|
'node_engine_include_dir%': 'deps/chakrashim/include'
|
|
},
|
|
}]
|
|
],
|
|
|
|
'include_dirs': [
|
|
'<(node_root_dir)/include/node',
|
|
'<(node_root_dir)/src',
|
|
'<(node_root_dir)/deps/uv/include',
|
|
'<(node_root_dir)/<(node_engine_include_dir)'
|
|
],
|
|
'defines!': [
|
|
'BUILDING_UV_SHARED=1', # Inherited from common.gypi.
|
|
'BUILDING_V8_SHARED=1', # Inherited from common.gypi.
|
|
],
|
|
'defines': [
|
|
'NODE_GYP_MODULE_NAME=>(_target_name)',
|
|
'USING_UV_SHARED=1',
|
|
'USING_V8_SHARED=1',
|
|
# Warn when using deprecated V8 APIs.
|
|
'V8_DEPRECATION_WARNINGS=1'
|
|
],
|
|
|
|
'target_conditions': [
|
|
['_type=="loadable_module"', {
|
|
'product_extension': 'node',
|
|
'defines': [
|
|
'BUILDING_NODE_EXTENSION'
|
|
],
|
|
'xcode_settings': {
|
|
'OTHER_LDFLAGS': [
|
|
'-undefined dynamic_lookup'
|
|
],
|
|
},
|
|
}],
|
|
|
|
['_type=="static_library"', {
|
|
# set to `1` to *disable* the -T thin archive 'ld' flag.
|
|
# older linkers don't support this flag.
|
|
'standalone_static_library': '<(standalone_static_library)'
|
|
}],
|
|
|
|
['_win_delay_load_hook=="true"', {
|
|
# If the addon specifies `'win_delay_load_hook': 'true'` in its
|
|
# binding.gyp, link a delay-load hook into the DLL. This hook ensures
|
|
# that the addon will work regardless of whether the node/iojs binary
|
|
# is named node.exe, iojs.exe, or something else.
|
|
'conditions': [
|
|
[ 'OS=="win"', {
|
|
'sources': [
|
|
'<(node_gyp_dir)/src/win_delay_load_hook.cc',
|
|
],
|
|
'msvs_settings': {
|
|
'VCLinkerTool': {
|
|
'DelayLoadDLLs': [ 'iojs.exe', 'node.exe' ],
|
|
# Don't print a linker warning when no imports from either .exe
|
|
# are used.
|
|
'AdditionalOptions': [ '/ignore:4199' ],
|
|
},
|
|
},
|
|
}],
|
|
],
|
|
}],
|
|
],
|
|
|
|
'conditions': [
|
|
[ 'OS=="mac"', {
|
|
'defines': [
|
|
'_DARWIN_USE_64_BIT_INODE=1'
|
|
],
|
|
'xcode_settings': {
|
|
'DYLIB_INSTALL_NAME_BASE': '@rpath'
|
|
},
|
|
}],
|
|
[ 'OS=="aix"', {
|
|
'ldflags': [
|
|
'-Wl,-bimport:<(node_exp_file)'
|
|
],
|
|
}],
|
|
[ 'OS=="win"', {
|
|
'conditions': [
|
|
['node_engine=="chakracore"', {
|
|
'library_dirs': [ '<(node_root_dir)/$(ConfigurationName)' ],
|
|
'libraries': [ '<@(node_engine_libs)' ],
|
|
}],
|
|
],
|
|
'libraries': [
|
|
'-lkernel32.lib',
|
|
'-luser32.lib',
|
|
'-lgdi32.lib',
|
|
'-lwinspool.lib',
|
|
'-lcomdlg32.lib',
|
|
'-ladvapi32.lib',
|
|
'-lshell32.lib',
|
|
'-lole32.lib',
|
|
'-loleaut32.lib',
|
|
'-luuid.lib',
|
|
'-lodbc32.lib',
|
|
'-lDelayImp.lib',
|
|
'-l"<(node_root_dir)/$(ConfigurationName)/<(node_lib_file)"'
|
|
],
|
|
'msvs_disabled_warnings': [
|
|
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent<T>'
|
|
# needs to have dll-interface to be used by
|
|
# clients of class 'node::ObjectWrap'
|
|
4251
|
|
],
|
|
}, {
|
|
# OS!="win"
|
|
'defines': [
|
|
'_LARGEFILE_SOURCE',
|
|
'_FILE_OFFSET_BITS=64'
|
|
],
|
|
}],
|
|
[ 'OS in "freebsd openbsd netbsd solaris" or \
|
|
(OS=="linux" and target_arch!="ia32")', {
|
|
'cflags': [ '-fPIC' ],
|
|
}]
|
|
]
|
|
}
|
|
}
|