Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit 493b35b

Browse files
committed
Add quic transport doc
1 parent 90fec52 commit 493b35b

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
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

Comments
 (0)