| OLD | NEW |
| 1 GN | 1 GN |
| 2 ===== | 2 ===== |
| 3 | 3 |
| 4 [GN](https://chromium.googlesource.com/chromium/src/tools/gn/) | 4 [GN](https://chromium.googlesource.com/chromium/src/tools/gn/) |
| 5 is a new meta-build system originally designed to replace GYP in Chromium. | 5 is a new meta-build system originally designed to replace GYP in Chromium. |
| 6 | 6 |
| 7 You can build Skia using GN in a limited number of configurations. We expect | 7 You can build Skia using GN in a limited number of configurations. We expect |
| 8 that as that limited number rises, GN will become the preferred, and then only, | 8 that as that limited number rises, GN will become the preferred, and then only, |
| 9 way to build Skia. | 9 way to build Skia. |
| 10 | 10 |
| 11 Supported Features | 11 Supported Features |
| 12 ---------- | 12 ---------- |
| 13 | 13 |
| 14 * Linux, Mac | 14 * Linux, Mac, Android |
| 15 * Software and GL rendering | 15 * Software and GL rendering |
| 16 * libskia.a, libskia.so | 16 * libskia.a, libskia.so |
| 17 * DM, nanobench | 17 * DM, nanobench |
| 18 | 18 |
| 19 Quickstart | 19 Quickstart |
| 20 ---------- | 20 ---------- |
| 21 | 21 |
| 22 Please check out Skia using the instructions in one of the other quick start | 22 Please check out Skia using the instructions in one of the other quick start |
| 23 guides. We diverge where they'd first run some command with "gyp" in it. | 23 guides. We diverge where they'd first run some command with "gyp" in it. |
| 24 | 24 |
| 25 <!--?prettify lang=sh?--> | 25 <!--?prettify lang=sh?--> |
| 26 | 26 |
| 27 # After gclient sync, run fetch-gn to make sure you have GN. | 27 # After gclient sync, run fetch-gn to make sure you have GN. |
| 28 gclient sync && bin/fetch-gn | 28 gclient sync && bin/fetch-gn |
| 29 | 29 |
| 30 # Run GN to generate your build files. Some examples. | 30 # Run GN to generate your build files. Some examples. |
| 31 gn gen out/Debug | 31 gn gen out/Debug |
| 32 gn gen out/Release --args=is_debug=false | 32 gn gen out/Release --args='is_debug=false' |
| 33 gn gen out/Clang --args='cc="clang" cxx="clang++"' | 33 gn gen out/Clang --args='cc="clang" cxx="clang++"' |
| 34 gn gen out/Shared --args=is_component_build=true | 34 gn gen out/Shared --args='is_component_build=true' |
| 35 gn gen out/Cached --args='compiler_prefix="ccache"' |
| 36 gn gen out/Stripped --args='extra_cflags="-g0"' |
| 37 gn gen out/RTTI --args='extra_cflags_cc="-frtti"' |
| 35 | 38 |
| 36 # Build | 39 # Build |
| 40 ninja -C out/Debug |
| 37 ninja -C out/Release | 41 ninja -C out/Release |
| 38 ninja -C out/Debug | |
| 39 ninja -C out/Clang | 42 ninja -C out/Clang |
| 40 ninja -C out/Shared | 43 ninja -C out/Shared |
| 44 ninja -C out/Cached |
| 45 ninja -C out/Stripped |
| 46 ninja -C out/RTTI |
| 41 | 47 |
| 42 From here everything is pretty much business as usual. | 48 From here everything is pretty much business as usual. |
| 49 |
| 50 Android |
| 51 ------- |
| 52 |
| 53 To build Skia for Android you need an [Android |
| 54 NDK](https://developer.android.com/ndk/index.html). |
| 55 |
| 56 If you do not have an NDK and have access to CIPD, you |
| 57 can use one of these commands to fetch the NDK our bots use: |
| 58 |
| 59 <!--?prettify lang=sh?--> |
| 60 |
| 61 python infra/bots/assets/android_ndk_linux/download.py -t /tmp/ndk |
| 62 python infra/bots/assets/android_ndk_darwin/download.py -t /tmp/ndk |
| 63 |
| 64 When generating your GN build files, pass the path to your `ndk` and your |
| 65 desired `target_cpu`: |
| 66 |
| 67 <!--?prettify lang=sh?--> |
| 68 |
| 69 gn gen out/arm --args='ndk="/tmp/ndk" target_cpu="arm"' |
| 70 gn gen out/arm64 --args='ndk="/tmp/ndk" target_cpu="arm64"' |
| 71 gn gen out/mips64el --args='ndk="/tmp/ndk" target_cpu="mips64el"' |
| 72 gn gen out/mipsel --args='ndk="/tmp/ndk" target_cpu="mipsel"' |
| 73 gn gen out/x64 --args='ndk="/tmp/ndk" target_cpu="x64"' |
| 74 gn gen out/x86 --args='ndk="/tmp/ndk" target_cpu="x86"' |
| 75 |
| 76 Other arguments like `is_debug` and `is_component_build` continue to work. |
| OLD | NEW |