build: re-add --ninja option to configure
Ninja is a build backend supported by gyp which is much faster than Make and is able to parallelize builds across all of the available cores very well. On my machine, this reduces the average build time from 5:14 minutes to 4:33 minutes. Refs: https://github.com/nodejs/node/pull/467 Refs: de224d6e6c9381e71ffee965dbda928802cc438e PR-URL: https://github.com/nodejs/node/pull/6780 Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
This commit is contained in:
parent
8af25a39d3
commit
de5020292e
10
configure
vendored
10
configure
vendored
@ -394,6 +394,11 @@ parser.add_option('--xcode',
|
||||
dest='use_xcode',
|
||||
help='generate build files for use with xcode')
|
||||
|
||||
parser.add_option('--ninja',
|
||||
action='store_true',
|
||||
dest='use_ninja',
|
||||
help='generate build files for use with Ninja')
|
||||
|
||||
parser.add_option('--enable-asan',
|
||||
action='store_true',
|
||||
dest='enable_asan',
|
||||
@ -806,6 +811,9 @@ def configure_node(o):
|
||||
|
||||
o['variables']['asan'] = int(options.enable_asan or 0)
|
||||
|
||||
if options.use_xcode and options.use_ninja:
|
||||
raise Exception('--xcode and --ninja cannot be used together.')
|
||||
|
||||
def configure_library(lib, output):
|
||||
shared_lib = 'shared_' + lib
|
||||
output['variables']['node_' + shared_lib] = b(getattr(options, shared_lib))
|
||||
@ -1241,6 +1249,8 @@ gyp_args = [sys.executable, 'tools/gyp_node.py', '--no-parallel']
|
||||
|
||||
if options.use_xcode:
|
||||
gyp_args += ['-f', 'xcode']
|
||||
elif options.use_ninja:
|
||||
gyp_args += ['-f', 'ninja']
|
||||
elif flavor == 'win' and sys.platform != 'msys':
|
||||
gyp_args += ['-f', 'msvs', '-G', 'msvs_version=auto']
|
||||
else:
|
||||
|
@ -2,12 +2,11 @@
|
||||
|
||||
The purpose of this guide is to show how to build Node.js using [Ninja][], as doing so can be significantly quicker than using `make`. Please see [Ninja's site][Ninja] for installation instructions (unix only).
|
||||
|
||||
To build Node with ninja, there are 4 steps that must be taken:
|
||||
To build Node with ninja, there are 3 steps that must be taken:
|
||||
|
||||
1. Configure the project's OS-based build rules via `./configure` as usual.
|
||||
2. Use `tools/gyp_node.py -f ninja` to produce Ninja-buildable `gyp` output.
|
||||
3. Run `ninja -C out/Release` to produce a compiled release binary.
|
||||
4. Lastly, make symlink to `./node` using `ln -fs out/Release/node node`.
|
||||
1. Configure the project's OS-based build rules via `./configure --ninja`.
|
||||
2. Run `ninja -C out/Release` to produce a compiled release binary.
|
||||
3. Lastly, make symlink to `./node` using `ln -fs out/Release/node node`.
|
||||
|
||||
When running `ninja -C out/Release` you will see output similar to the following if the build has succeeded:
|
||||
```
|
||||
@ -28,12 +27,12 @@ As such, if you wish to run the tests, it can be helpful to invoke the test runn
|
||||
|
||||
## Alias
|
||||
|
||||
`alias nnode='./configure && tools/gyp_node.py -f ninja && ninja -C out/Release && ln -fs out/Release/node node'`
|
||||
`alias nnode='./configure --ninja && ninja -C out/Release && ln -fs out/Release/node node'`
|
||||
|
||||
## Producing a debug build
|
||||
|
||||
The above alias can be modified slightly to produce a debug build, rather than a release build as shown below:
|
||||
`alias nnodedebug='./configure && tools/gyp_node.py -f ninja && ninja -C out/Debug && ln -fs out/Debug/node node_g'`
|
||||
`alias nnodedebug='./configure --ninja && ninja -C out/Debug && ln -fs out/Debug/node node_g'`
|
||||
|
||||
|
||||
[Ninja]: https://martine.github.io/ninja/
|
||||
|
Loading…
x
Reference in New Issue
Block a user