1# Chromium's QUIC
2
3This directory contains a copy of Chromium's QUIC, along with what is
4(hopefully) a minimum set of dependencies from Chromium.  All of the build files
5were rewritten to avoid also porting Chromium's build infrastructure (gn flags,
6configs, and absolute-path imports).
7
8## Build files
9
10The QUIC code is all covered by the BUILD.gn in this directory.  The remaining
11Chromium code is covered by a BUILD.gn for each top-level directory under src/
12(e.g. net, url, etc.).  src/base/ is handled slightly differently, because it is
13a submodule where we still want to rewrite BUILD.gn, as well as some generated
14files.  In this case, we use build/base/, which contains our new BUILD.gn and
15generated files from an existing Chromium checkout.
16
17## Cloning process
18
19At a basic level, the original cloning process was as follows:
20  1. Copy net/third_party/quic and add its files to BUILD.gn.
21  2. Try to compile.
22  3. Fix errors by copying evidently necessary files from Chromium and adding
23     them to the appropriate BUILD.gn
24  4. Repeat from 2 until everything works.
25
26The process is mostly encapsulated in the script `clone_helper.sh`.  The only
27caveat is that the original cloning process was done as described, but now
28src/base/ is included as a submodule with its BUILD.gn and generated files in
29build/base/.
30
31The original clone is from Chromium commit
328b90885e60134c34176df2dd1834a94dbd6b73b9.
33