Skip to content

Latest commit

 

History

History
122 lines (85 loc) · 3.58 KB

build-from-source.md

File metadata and controls

122 lines (85 loc) · 3.58 KB

Build from Source

Prerequisites

node-webrtc uses node-cmake to build from source. When building from source, in addition to the prerequisites required by node-cmake, you will need

Install

Once you have the prerequisites, clone the repository, set the SKIP_DOWNLOAD environment variable to "true", and run npm install. Just like when installing prebuilt binaries, you can set the TARGET_ARCH environment variable to "arm" or "arm64" to build for armv7l or arm64, respectively. Linux and macOS users can also set the DEBUG environment variable for debug builds.

git clone https://github.com/node-webrtc/node-webrtc.git
cd node-webrtc
SKIP_DOWNLOAD=true npm install

Subsequent Builds

Subsequent builds can be triggered with ncmake:

./node_modules/.bin/ncmake configure
./node_modules/.bin/ncmake build

You can pass either --debug or --release to build a debug or release build of node-webrtc (and the underlying WebRTC library). Refer to node-cmake for additional command-line options to ncmake.

Other Notes

Linux

On Linux, we statically link libc++ and libc++abi. Also, although we compile WebRTC sources with Clang (downloaded as part of WebRTC's build process), we compile node-webrtc sources with GCC 5.4 or newer.

armv7l

In order to cross-compile for armv7l on Linux,

  1. Set TARGET_ARCH to "arm".
  2. Install the appropriate toolchain, and set ARM_TOOLS_PATH.
  3. On Ubuntu, you may also need g++-arm-linux-gnueabihf.
wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/arm-linux-gnueabihf/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
SKIP_DOWNLOAD=true TARGET_ARCH=arm ARM_TOOLS_PATH=$(pwd)/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf npm install

arm64

In order to cross-compile for arm64 on Linux,

  1. Set TARGET_ARCH to "arm64".
  2. Install the appropriate toolchain, and set ARM_TOOLS_PATH.
  3. On Ubuntu, you may also need g++-aarch64-linux-gnu.
wget https://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/aarch64-linux-gnu/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
tar xf gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu.tar.xz
SKIP_DOWNLOAD=true TARGET_ARCH=arm64 ARM_TOOLS_PATH=$(pwd)/gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu npm install

macOS

On macOS, we statically link libc++ and libc++abi. Also, we compile WebRTC sources with the version of Clang downloaded as part of WebRTC's build process, but we compile node-webrtc sources using the system Clang.

Windows

On Windows, we do not compile WebRTC sources with Clang. This is disabled by passing is_clang=false to gn gen.

Test

Unit & Integration Tests

Once everything is built, run

npm test

Web Platform Tests

web-platform-tests/wpt defines a suite of WebRTC tests. node-webrtc borrows a technique from jsdom/jsdom to run these tests in Node.js. Run the tests with

npm run wpt:test

Browser Tests

These tests are run by Circle CI to ensure node-webrtc remains compatible with the latest versions of Chrome and Firefox.

npm run test:browsers

Electron Test

npm run test:electron