Enable using siphash by default

Always generate an args.gn file

This way we can depend on it as input when generating config.gypi

TBR=machenbach@chromium.org

Change-Id: Id120d9c10a1de1e214b98a8efdca0b6a9dc07355
Reviewed-on: https://chromium-review.googlesource.com/c/1469781
Reviewed-by: Yang Guo <yangguo@chromium.org>
1 file changed
tree: 36dfe4559c5494668a2c8b8be9e0bad6a261b52b
  1. gn/
  2. tools/
  3. .gitignore
  4. .gn
  5. codereview.settings
  6. DEPS
  7. LICENSE
  8. Makefile
  9. README.md
README.md

Node.js built with GN

This project is a set of dependency and build configurations to build Node.js with GN.

Background

V8 was originally built with SCons. Following Chromium, it made the switch to GYP, completing around 2012. That was when Node.js started its success story. However, again following Chromium, V8 made the switch to GN, completing in 2016. So far, Node.js has hesitated in adopting GN. One of the reasons is its now established native modules ecosystem that relies on GYP for build configuration.

Electron, having both Chromium and Node.js as its dependencies, adopted GN. Many files in this repository have been derived from the Electron project, with appropriate changes to avoid the need for forking files, to implement a standalone build, or to fix test failures.

Some reading material:

Instructions

Checking out source

Get depot_tools first.

mkdir node-ci
cd node-ci
fetch node-ci

Alternatively, you can

mkdir node-ci
cd node-ci
git clone https://chromium.googlesource.com/v8/node-ci
gclient config https://chromium.googlesource.com/v8/node-ci --unmanaged

Build

cd node-ci
make deps
make node

Test

JOBS=4 make test

Project priorities

  • Stay as slim as possible. By avoiding to fork files from dependencies, future maintenance becomes less a hassle.
  • Pull necessary sources as dependencies rather than checking in the sources.
  • Stay as up-to-date as possible. The point of this is to be able to build with newest versions of dependencies, including Node.js, V8, and ICU.
  • Simplicity. It should be easy to get up and running.

Not yet implemented

  • Support building on Mac and Windows. The current configurations have only been tested for Linux.
  • Platform-specific OpenSSL build configurations. The current build only supports the slowest platform-independent configuration.
  • Enable shared library build.

Explicit non-goals

  • To translate every configuration from the GYP build.
  • To support platforms not supported by Chromium.
  • To replace Node.js' test runner with the one used by V8.
  • To use GN to build native modules.