|
| 1 | +# Building OWT QUIC SDK |
| 2 | + |
| 3 | +## System requirements |
| 4 | + |
| 5 | +- At least 50GB of free disk space. |
| 6 | +- High speed network connection. |
| 7 | +- Ubuntu 18.04 for Ubuntu build. |
| 8 | +- Chromium source code base 109.0.5393.1 |
| 9 | + |
| 10 | +## Install dependencies |
| 11 | + |
| 12 | +Please follow [Chromium Windows build instruction](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/windows_build_instructions.md) or [Chromium Linux build instruction](https://chromium.googlesource.com/chromium/src/+/HEAD/docs/linux/build_instructions.md) to setup system and install `depot_tools`. |
| 13 | + |
| 14 | +## Get the code |
| 15 | + |
| 16 | +Create a new directory for the check out, and create a `.gclient` file in this directory. Add following code to `.gclient` file. |
| 17 | + |
| 18 | +``` |
| 19 | +solutions = [ |
| 20 | + { "name" : "src/owt", |
| 21 | + "url" : "https://github.com/open-webrtc-toolkit/owt-sdk-quic.git", |
| 22 | + "deps_file" : "DEPS", |
| 23 | + "managed" : False, |
| 24 | + "custom_deps" : { |
| 25 | + }, |
| 26 | + "custom_vars": {}, |
| 27 | + }, |
| 28 | +] |
| 29 | +``` |
| 30 | + |
| 31 | +Run `gclient sync` to check out SDK code, Chromium code, and other dependencies. It may take one or two hours if your network connection is not fast enough. |
| 32 | + |
| 33 | +You will see a `src` directory after sync completes. Switch to the `src` directory for following steps. |
| 34 | + |
| 35 | +## Additional changes |
| 36 | + |
| 37 | +Some manually changes to Chromium code are needed before building SDK. |
| 38 | + |
| 39 | +1. Apply patches in `owt/quic_transport/patches` to `src` directory. |
| 40 | + |
| 41 | +1. Create a file `gclient_args.gni` in `build/config` with following code. |
| 42 | + |
| 43 | +``` |
| 44 | +# Generated from 'DEPS' |
| 45 | +build_with_chromium = true |
| 46 | +checkout_android = false |
| 47 | +checkout_android_native_support = false |
| 48 | +checkout_ios_webkit = false |
| 49 | +checkout_nacl = true |
| 50 | +checkout_oculus_sdk = false |
| 51 | +checkout_openxr = false |
| 52 | +checkout_aemu = false |
| 53 | +checkout_google_benchmark = false |
| 54 | +``` |
| 55 | + |
| 56 | +Since we checked out code to `src/owt`, gclient cannot find buildtools under this directory. We need to add an environment variable `CHROMIUM_BUILDTOOLS_PATH`. Its value should be `<dir of .gclient file>/src/buildtools`. |
| 57 | + |
| 58 | +## Build SDK |
| 59 | + |
| 60 | +Run `gn gen out/debug` to generate ninja files, or `gn args out/debug` to configure GN arguments. For debug version, it may look like this |
| 61 | +``` |
| 62 | +is_debug=true |
| 63 | +is_component_build=false |
| 64 | +symbol_level=1 |
| 65 | +``` |
| 66 | + |
| 67 | +You may want to set `is_component_build` to `false` in order to get a single shared library, but you can also set it to `true` to reduce the compiling time for debugging. `symbol_level` is set to `1` since `2` is conflicted with `is_component_build=false`. |
| 68 | + |
| 69 | +Then run `ninja -C out/debug/ owt_quic_transport` to build the SDK. |
| 70 | + |
| 71 | +## Certificates |
| 72 | + |
| 73 | +Encryption is mandatory for QUIC connections. You may generate a testing certificate by running `net/tools/quic/certs/generate-certs.sh`. It valids for 72 hours. |
0 commit comments