mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 21:19:50 +01:00
build: expose napi_build_version variable
Expose `napi_build_version` to allow `node-gyp` to make it available for building native addons. Fixes: https://github.com/nodejs/node-gyp/issues/1745 Refs: https://github.com/nodejs/abi-stable-node/issues/371 PR-URL: https://github.com/nodejs/node/pull/27835 Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
This commit is contained in:
parent
e008ca8b93
commit
9868126546
@ -34,6 +34,7 @@ import nodedownload
|
||||
# imports in tools/
|
||||
sys.path.insert(0, 'tools')
|
||||
import getmoduleversion
|
||||
import getnapibuildversion
|
||||
from gyp_node import run_gyp
|
||||
|
||||
# imports in deps/v8/tools/node
|
||||
@ -1147,6 +1148,10 @@ def configure_node(o):
|
||||
else:
|
||||
o['variables']['node_target_type'] = 'executable'
|
||||
|
||||
def configure_napi(output):
|
||||
version = getnapibuildversion.get_napi_version()
|
||||
output['variables']['napi_build_version'] = version
|
||||
|
||||
def configure_library(lib, output):
|
||||
shared_lib = 'shared_' + lib
|
||||
output['variables']['node_' + shared_lib] = b(getattr(options, shared_lib))
|
||||
@ -1626,6 +1631,7 @@ if (options.dest_os):
|
||||
flavor = GetFlavor(flavor_params)
|
||||
|
||||
configure_node(output)
|
||||
configure_napi(output)
|
||||
configure_library('zlib', output)
|
||||
configure_library('http_parser', output)
|
||||
configure_library('libuv', output)
|
||||
|
@ -662,6 +662,7 @@ An example of the possible output looks like:
|
||||
variables:
|
||||
{
|
||||
host_arch: 'x64',
|
||||
napi_build_version: 4,
|
||||
node_install_npm: 'true',
|
||||
node_prefix: '',
|
||||
node_shared_cares: 'false',
|
||||
|
@ -12,7 +12,12 @@
|
||||
#ifdef NAPI_EXPERIMENTAL
|
||||
#define NAPI_VERSION NAPI_VERSION_EXPERIMENTAL
|
||||
#else
|
||||
// The baseline version for N-API
|
||||
// The baseline version for N-API.
|
||||
// The NAPI_VERSION controls which version will be used by default when
|
||||
// compilling a native addon. If the addon developer specifically wants to use
|
||||
// functions available in a new version of N-API that is not yet ported in all
|
||||
// LTS versions, they can set NAPI_VERSION knowing that they have specifically
|
||||
// depended on that version.
|
||||
#define NAPI_VERSION 4
|
||||
#endif
|
||||
#endif
|
||||
|
@ -91,7 +91,8 @@
|
||||
*/
|
||||
#define NODE_MODULE_VERSION 74
|
||||
|
||||
// the NAPI_VERSION provided by this version of the runtime
|
||||
// The NAPI_VERSION provided by this version of the runtime. This is the version
|
||||
// which the Node binary being built supports.
|
||||
#define NAPI_VERSION 4
|
||||
|
||||
#endif // SRC_NODE_VERSION_H_
|
||||
|
@ -45,3 +45,6 @@ for (let i = 0; i < expected_keys.length; i++) {
|
||||
const descriptor = Object.getOwnPropertyDescriptor(process.versions, key);
|
||||
assert.strictEqual(descriptor.writable, false);
|
||||
}
|
||||
|
||||
assert.strictEqual(process.config.variables.napi_build_version,
|
||||
process.versions.napi);
|
||||
|
26
tools/getnapibuildversion.py
Normal file
26
tools/getnapibuildversion.py
Normal file
@ -0,0 +1,26 @@
|
||||
from __future__ import print_function
|
||||
import os
|
||||
import re
|
||||
|
||||
|
||||
def get_napi_version():
|
||||
napi_version_h = os.path.join(
|
||||
os.path.dirname(__file__),
|
||||
'..',
|
||||
'src',
|
||||
'node_version.h')
|
||||
|
||||
f = open(napi_version_h)
|
||||
|
||||
regex = '^#define NAPI_VERSION'
|
||||
|
||||
for line in f:
|
||||
if re.match(regex, line):
|
||||
napi_version = line.split()[2]
|
||||
return napi_version
|
||||
|
||||
raise Exception('Could not find pattern matching %s' % regex)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
print(get_napi_version())
|
Loading…
Reference in New Issue
Block a user