Skip to content

Building the WebRTC lib for Windows

Saumitra Aditya edited this page Mar 25, 2017 · 13 revisions

This guide is specific to the WebRTC release that is being compiled. It has been tested on 64-bit Windows 10 to build WebRTC branch-head/58.

These instructions are derived from following links:

Download dependencies

  1. Install Visual Studio 2015 Update 2 or later - Community Edition should work if its license is appropriate for you. Use the Custom Install option and select:

    • Visual C++, which will select three sub-categories including MFC
    • Universal Windows Apps Development Tools > Tools
    • Universal Windows Apps Development Tools > Windows 10 SDK (10.0.10586)
  2. Install the Chromium depot tolls

  3. Download depot_tools.zip and decompress it.

  4. Add depot_tools to the end of your PATH: * With Administrator access:

    • Control Panel > System and Security > System > Advanced system settings

    • Modify the PATH system variable to include depot_tools

* Without Administrator access:

  * `Control Panel > User Accounts > User Accounts > Change my environment variables`

  * Add a PATH user variable: `%PATH%;C:\path\to\depot_tools`
  1. Run gclient from the cmd shell. The first time it is run, it will install its own copy various tools.

Download the source code

  1. Create a working directory, enter it, and run fetch webrtc:
mkdir webrtc-checkout
cd webrtc-checkout
fetch --nohooks webrtc
  1. Choose the stable release 58 rather than the most recent release by entering:
cd src
git branch -r
git checkout branch-heads/58
  1. Download the code
gclient sync

Note: The download will take a while, but it no longer downloads the Chromium repository after branch-head/56. Do not interrupt this step or you may need to start all over again (a new gclient sync may be enough, but you might also need wipe your webrtc_checkout\src folder and start over).

Update your checkout

To update an existing checkout, you can run

git rebase-update
gclient sync

The first command updates the primary Chromium source repository and rebases any of your local branches on top of tip-of-tree (aka the Git branch origin/master). If you don't want to use this script, you can also just use git pull or other common Git commands to update the repo.

The second command syncs the subrepositories to the appropriate versions and re-runs the hooks as needed.

Building WebRTC library

  1. After downloading the code, you can start building the WebRTC library(in working directory src/).

To build 64-bit libs, you need to run the following commands first:

gn gen out/Debug_x64

Then compile with:

Debug:

ninja -C out/Debug_x64

To build specific targets from webrtc use below patterns as examples, paths/targets/groups could be figured by looking at Build.gn files.

ninja -C out/debug_openWRT/ webrtc/base:base

This would generate static libraries -librtc_base.a, librtc_base_approved.a .

ninja -C out/debug_openWRT/ webrtc/p2p:p2p

static libraries - librtc_p2p.a

To create a 64 bit Release build you must edit the GN args and set is_debug = true, the default is x64 :

gn arg out/Release_x64
is_debug = false
target_cpu = "x64"
gn gen out/Release_x64
ninja -C out/Release_x64
  1. Extract the static libraries from out/Debug_x64 and out/Release_x64. Currently the library we need are:
boringssl.dll.lib field_trial_default.lib jsoncpp.lib rtc_base.lib rtc_base_approved.lib rtc_p2p.lib