OLD | NEW |
1 Linux | 1 Linux |
2 ===== | 2 ===== |
3 | 3 |
4 Quickstart | 4 Quickstart |
5 ---------- | 5 ---------- |
6 | 6 |
7 1. Install depot tools. | 7 <!--?prettify lang=sh?--> |
8 | 8 |
9 <!--?prettify lang=sh?--> | |
10 | 9 |
11 git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.
git' | 10 # Install depot_tools (this provides ninja and git-cl). |
12 export PATH="${PWD}/depot_tools:${PATH}" | 11 git clone 'https://chromium.googlesource.com/chromium/tools/depot_tools.git' |
| 12 export PATH="${PWD}/depot_tools:${PATH}" |
13 | 13 |
14 2. Get Skia. | 14 # Get Skia. |
| 15 git clone 'https://skia.googlesource.com/skia' |
| 16 cd skia |
15 | 17 |
16 <!--?prettify lang=sh?--> | 18 # Install Dependencies (may require sudo). |
| 19 tools/install_dependencies.sh |
17 | 20 |
18 git clone 'https://skia.googlesource.com/skia' | 21 # Sync, Config, and Build. |
19 cd skia | 22 bin/sync-and-gyp |
| 23 ninja -C out/Debug dm SampleApp |
20 | 24 |
21 3. Install Dependencies (may require sudo). | 25 # Run DM, the Skia test app. |
| 26 out/Debug/dm |
22 | 27 |
23 <!--?prettify lang=sh?--> | 28 # Run SampleApp. |
| 29 out/Debug/SampleApp |
24 | 30 |
25 tools/install_dependencies.sh | 31 # Run nanobench, the Skia benchmarking tool. |
| 32 ninja -C out/Release nanobench |
| 33 out/Release/nanobench |
26 | 34 |
27 4. Build. | |
28 | |
29 <!--?prettify lang=sh?--> | |
30 | |
31 bin/sync-and-gyp && ninja -C out/Debug | |
32 | |
33 5. Run DM (the Skia test app) and SampleApp. | |
34 | |
35 <!--?prettify lang=sh?--> | |
36 | |
37 out/Debug/dm | |
38 out/Debug/SampleApp | |
39 | 35 |
40 <a name="prerequisites"></a>Prerequisites | 36 <a name="prerequisites"></a>Prerequisites |
41 ------------- | 37 ----------------------------------------- |
42 | 38 |
43 On a Ubuntu 12.04 (Precise) or Ubuntu 14.04 (Trusty) system, you can run | 39 On a Ubuntu 12.04 (Precise) or Ubuntu 14.04 (Trusty) system, you can run |
44 `tools/install_dependencies.sh`, which will install the needed packages. On | 40 `tools/install_dependencies.sh`, which will install the needed packages. On |
45 Ubuntu 12.04, you will need to install the`ninja` build tool separately, which | 41 Ubuntu 12.04, you will need to install the`ninja` build tool separately, which |
46 comes with Chromium's `depot_tools`. | 42 comes with Chromium's `depot_tools`. |
47 | 43 |
48 To contribute changes back to Skia, you will need `git-cl`, which comes with Chr
omium's `depot_tools`. | 44 To contribute changes back to Skia, you will need `git-cl`, which |
| 45 comes with Chromium's `depot_tools`. |
49 | 46 |
50 (If you use another Linux distribution, please consider contributing back | 47 (If you use another Linux distribution, please consider contributing back |
51 instructions for installing the required packages — we can then incorporate | 48 instructions for installing the required packages — we can then incorporate |
52 that knowledge into the `tools/install_dependencies.sh` tool.) | 49 that knowledge into the `tools/install_dependencies.sh` tool.) |
53 | 50 |
54 Make sure the following have been installed: | 51 Make sure the following have been installed: |
55 | 52 |
56 * Chromium depot_tools: http://www.chromium.org/developers/how-tos/depottools | 53 * [Chromium depot_tools](http://www.chromium.org/developers/how-tos/depottools
) |
57 * A C++ compiler (typically gcc) | 54 |
58 * python 2.7.x | 55 * A C++ compiler (typically GCC or Clang) **build-essential** or **clang-3.6** |
59 * suggested Ubuntu packages: python2.7, python2.7-dev | 56 |
60 * The FreeType and Fontconfig font engines | 57 * Python 2.7.x: **python2.7-dev** |
61 * suggested Ubuntu packages: libfreetype6, libfreetype6-dev , libfontconfig
, libfontconfig-dev e.g., `sudo apt-get install libfreetype6 libfreetype6-dev li
bfontconfig libfontconfig-dev` | 58 |
62 * libpng | 59 * The FreeType and Fontconfig font engines: **libfreetype6-dev** and |
63 * suggested Ubuntu packages: libpng12-0, libpng12-dev e.g., `sudo apt-get in
stall libpng12-0 libpng12-dev` | 60 **libfontconfig1-dev** |
64 * libgif | 61 |
65 * suggested Ubuntu package: libgif-dev e.g., `sudo apt-get install libgif-de
v` | 62 * Mesa OpenGL utility library headers: **libglu1-mesa-dev** |
66 * `$ sudo apt-get install libgif4:i386` | 63 |
67 * `$ sudo ln -s /usr/lib/i386-linux-gnu/libgif.so.4 /usr/lib/i386-linux-gnu/
libgif.so` | 64 * Mesa headers: **mesa-common-dev** |
68 * libglu1-mesa-dev | 65 |
69 * mesa-common-dev | 66 * GL, such as **freeglut3-dev** |
70 * GL | 67 |
71 * such as freeglut3-dev | 68 * QT4, used by the [Skia Debugger](/dev/tools/debugger): **libqt4-dev** |
72 | 69 |
73 Check out the source code | 70 Check out the source code |
74 ------------------------- | 71 ------------------------- |
75 | 72 |
76 Follow the instructions [here](../download) for downloading the Skia source. | 73 Follow the instructions [here](../download) for downloading the Skia source. |
77 | 74 |
| 75 Notes |
| 76 ----- |
| 77 |
| 78 1. On 32-bit Linux (when `uname -m` is *not* `x86_64`), you will have to |
| 79 explicitly specify the architecture: |
| 80 |
| 81 <!--?prettify lang=sh?--> |
| 82 |
| 83 GYP_DEFINES='skia_arch_type=x86' python bin/sync-and-gyp |
78 | 84 |
79 Generate build files | 85 Generate build files |
80 -------------------- | 86 -------------------- |
81 | 87 |
82 We use the open-source gyp tool to generate ninja files (and analogous build | 88 See [this page for generating build files and run tests](desktop). |
83 scripts on other platforms) from our multiplatform "gyp" files. | |
84 | |
85 Generate the build files by running the following in your Skia home directory: | |
86 | |
87 ./gyp_skia | |
88 | |
89 Or, you can just rely on it being run automatically by using `make` instead of | |
90 `ninja` in examples shown below. | |
91 | |
92 If you want to use Eclipse, see Creating an Eclipse Project after you have gener
ated the makefiles. | |
93 | |
94 On 32-bit Linux (when `uname -m` is *not* `x86_64`), you will have to | |
95 explicitly specify the architecture: | |
96 | |
97 GYP_DEFINES='skia_arch_type=x86' ./gyp_skia | |
98 | |
99 Build and run tests from the command line | |
100 ----------------------------------------- | |
101 | |
102 ninja -C out/Debug dm | |
103 out/Debug/dm | |
104 | |
105 The usual mode you want for testing is Debug mode (`SK_DEBUG` is defined, and | |
106 debug symbols are included in the binary). If you would like to build the | |
107 | |
108 Release version instead | |
109 ----------------------- | |
110 | |
111 ninja -C out/Release dm | |
112 out/Release/dm | |
113 | |
114 Build and run nanobench (performance tests) | |
115 ------------------------------------------- | |
116 | |
117 In this case, we will build with the "Release" configuration, since we are | |
118 running performance tests. | |
119 | |
120 ninja -C out/Release nanobench | |
121 out/Release/nanobench [ --skps path/to/*.skp ] | |
122 | |
123 Build and run SampleApp | |
124 ----------------------- | |
125 | |
126 This time we will add the `-j` flag to fire up multiple threads during the | |
127 build. (This can be used with the other targets too.) | |
128 | |
129 make -j SampleApp | |
130 out/Debug/SampleApp | |
131 | |
132 When this launches, you should see a window with various graphical examples. | |
133 To move through the sample app, use the following keypresses: | |
134 | |
135 * right-arrow key: cycle through different test pages | |
136 * left-arrow key: cycle through rendering methods for each test page | |
137 * other keys are defined in SampleApp.cpp’s SampleWindow::onHandleKey() and Sa
mpleWindow::onHandleChar() methods | |
138 | |
139 Build and run DM ("diamond master") tests | |
140 ---------------------------------------- | |
141 | |
142 [DM is Skia's unit/correctness test harness](../../dev/testing/testing). | |
143 | |
144 make -j dm | |
145 out/Debug/dm | |
146 | |
147 The `GYP_DEFINES` environment variable can be used to change Skia's | |
148 compile-time settings. For example, to disable the Skia GPU backend, | |
149 run it as follows: | |
150 | |
151 GYP_DEFINES='skia_gpu=0' make -j dm | |
152 out/Debug/dm | |
153 | |
154 Build and run bench (performance testbench) | |
155 ------------------------------------------- | |
156 | |
157 Since bench tests performance, it usually makes more sense to run it in | |
158 Release mode... | |
159 | |
160 make -j bench BUILDTYPE=Release | |
161 out/Release/bench | |
162 | |
163 Build tools | |
164 ----------- | |
165 | |
166 make -j tools | |
167 out/Debug/skdiff | |
168 | |
169 Clean up all generated files | |
170 ---------------------------- | |
171 | |
172 make clean | |
OLD | NEW |