Skia Quickstart Guide
=====================


WARNING: Several steps in this guide are out of sync with our automatically-
tested, officially-supported processes for checking out and building Skia.
The officially supported processes are the ones documented in skiadocs; see
https://sites.google.com/site/skiadocs/user-documentation/quick-start-guides

The steps documented within this file are more experimental in nature.


This guide assumes you've got `git`, `ninja`, and `python` on your path.

1. First, checkout Skia:
    * `git clone https://skia.googlesource.com/skia.git`
    * `cd skia`
2. Then download the dependencies.  You only need to rerun this when
   the dependencies change.
    * `python tools/git-sync-deps`
3. Create our Ninja build files from our Gyp meta-build files.  You only need
   to rerun this when you sync or change a `.gyp` file.
    * `GYP_GENERATORS=ninja ./gyp_skia`
4. Now, let's build Skia.  There are a few options:
    * `ninja -C out/Debug`: no optimization, asserts enabled
    * `ninja -C out/Release`: optimization, asserts disabled
    * `ninja -C out/Coverage`: no optimization, asserts enabled, code coverage generated
5. Run some tests:
    * `out/Debug/tests`: runs unit tests from tests/
    * `out/Debug/dm`: runs golden master tests from gm/
6. Make some changes:
    * `git checkout -b my-new-feature origin/master`
    * `vim src/...`
    * `git commit -am "Changes for my new feature."`
    * `vim tests/...`
    * `git commit --amend -a`
    * `ninja -C out/Debug && out/Debug/tests && out/Debug/dm && echo ok`
7. Rebase your change onto the latest Skia code:
    * `git pull --rebase`
    * `ninja -C out/Debug && out/Debug/tests && out/Debug/dm && echo ok`
8. Upload your change and send it out for review:
    * `git cl upload -r my-skia-reviewer@google.com -s`
    * `git cl web`
9. Go through code review, get an LGTM, submit using the checkbox on the code review page.
