aboutsummaryrefslogtreecommitdiffhomepage
path: root/site/user/quick/nacl.md
blob: 2d88d8878eb54835c807944e871995352806738a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
NaCl (Experimental)
===================

Important Notes
---------------

  * This process has only been verified to work on Linux
  * Skia for NaCl is new and currently under development.  Therefore, some features are not (yet) supported:
    * GPU backend
    * Fonts - Currently, NaCl has no way to access system fonts.  This means
      that text drawn in Skia will not display.  A Pepper font API is in the
      works and should be available in the near future, but for now your best
      bet is to either package font data with your nexe or to send font data
      from javascript to your plugin at runtime.  Note that this will be the
      case with any graphics library in NaCl until the font API is finished.

Prerequisites
-------------

Execute the following commands in whatever directory you want to hold the NaCl SDK directory:

    wget http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip
    unzip nacl_sdk.zip
    rm nacl_sdk.zip
    nacl_sdk/naclsdk update pepper_32
    export NACL_SDK_ROOT=/path/to/nacl_sdk

Check out the Skia source
-------------------------

We use the "gclient" script (part of the depot_tools toolkit) to manage the
Skia source code. Follow the instructions at
http://www.chromium.org/developers/how-tos/depottools to get the gclient
script from depot_tools.

Instead of checking out trunk directly you will use gclient to checkout the
nacl directory, which will automatically pull the trunk directory for you.
Execute the following commands in whatever directory you want to be the root
for your Skia on NaCl development:

    gclient config https://skia.googlesource.com/skia.git
    gclient sync

Building the Skia libraries for NaCl
------------------------------------

The nacl_make script is used to compile Skia targets for NaCl.  It sets the
appropriate environment variables, calls GYP to generate makefiles, and runs
Make to build both 32 and 64-bit targets as required by NaCl.  To build the
Skia libraries, run the following from the trunk directory:

    platform_tools/nacl/nacl_make skia_lib

This will result in a set of static libraries being built into the out/nacl32
and out/nacl64 directories.  You can use these libraries in external NaCl
apps.

Building and running Skia's Apps in NaCl (Experimental)
-------------------------------------------------------

It is possible to run some of Skia's console apps in the browser.

### Skia Unit Tests

Build Skia tests from the trunk directory:

    platform_tools/nacl/bin/nacl_make tests

This will build the tests executable.  We include a tiny HTTP server (borrowed
from the NaCl SDK) in order to run the apps:

    cd platform_tools/nacl
    ./httpd.py

The HTTP server runs on port 5103 by default.  In Chrome, navigate to
`http://localhost:5103/` and click on the link for "unit tests."  After the
module downloads, you should see the tests begin to run.

### Sample App

The sample app relies on the GPU backend.  Therefore, it will compile but will not yet run.

    platform_tools/nacl/bin/nacl_make SampleApp

You can access the sample app at http://localhost:5103/SampleApp.

### Debugger

The debugger is currently in a partially-working state:

    platform_tools/nacl/bin/nacl_make debugger

You can access it at http://localhost:5103/debugger.