Roll src/third_party/WebKit eac3800:0237a66 (svn 202606:202607)
[chromium-blink-merge.git] / native_client_sdk / src / doc / sdk / download.rst
blob99400fcbbb7ef75bd16b6ecf2bf2f2b5fd212698
1 .. _download:
3 Download the Native Client SDK
4 ==============================
6 This page provides an overview of the Native Client SDK, and instructions for
7 downloading and installing the SDK.
9 .. raw:: html
10   
11   <div id="home">
12   <a class="button-nacl button-download" href="https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip">Download SDK Zip File</a>
13   </div>
15 .. _sdk-overview:
17 Overview
18 --------
20 The Native Client SDK includes:
22 - **Support for multiple Pepper versions** to compile for specific minimum
23   versions of Chrome.
24 - **Update utility** to download new bundles and updates to existing bundles.
25 - **Toolchains** to compile for Portable Native Client (PNaCl), traditional
26   Native Client (NaCl), and for compiling architecture-specific Native Client
27   applications with glibc.
28 - **Examples** Including C or C++ source files and header files illustrating
29   how to use NaCl and Pepper, and Makefiles to build the example with each of
30   the toolchains.
31 - **Tools** for validating Native Client modules and running modules from the
32   command line.
34 Follow the steps below to download and install the Native Client SDK.
36 .. _prerequisites:
38 Prerequisites
39 -------------
41 .. _python27:
43 Python 2.7
44 ^^^^^^^^^^
46 Make sure that the Python executable is in your ``PATH`` variable. Python 3.x is
47 not yet supported.
48   
49 * On Mac and Linux, Python is likely preinstalled. Run the command ``python -V``
50   in a terminal window, and make sure that the version you have is 2.7.x.
51 * On Windows, you may need to install Python. Go to `https://www.python.org/
52   download/ <https://www.python.org/download/>`_ and select the latest 2.x
53   version. In addition, be sure to add the Python directory (for example,
54   ``C:\python27``) to the ``PATH`` `environment variable <https://en.wikipedia.
55   org/wiki/Environment_variable>`_. Run ``python -V`` from a command line to
56   verify that you properly configured the PATH variable.
58 .. _make:
60 Make
61 ^^^^
63 * On the Mac, you need to install ``make`` on your system before you can build
64   and run the examples in the SDK. One easy way to get ``make``, along with
65   several other useful tools, is to install `Xcode Developer Tools 
66   <https://developer.apple.com/technologies/tools/>`_. After installing Xcode,
67   go to the XCode menu, open the Preferences dialog box then select Downloads
68   and Components. Verify that Command Line Tools are installed.
69 * On Windows, the Native Client SDK includes a copy of GNU Make.
71 .. _platforms:
73 Platforms
74 ---------
76 Native Client supports several operating systems, including Windows, Linux, OSX,
77 and ChromeOS. It supports several architectures including on x86-32, x86-64,
78 ARM, and MIPS.
80 .. _versioning:
82 Versions
83 --------
85 Chrome is released on a six week cycle, and developer versions of Chrome are
86 pushed to the public beta channel three weeks before each release. As with any
87 software, each release of Chrome may include changes to Native Client and the
88 Pepper interfaces that may require modification to existing applications.
89 However, modules compiled for one version of Pepper/Chrome should work with
90 subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the
91 Pepper APIs to help developers make adjustments to API changes and take
92 advantage of new features: `stable </native-client/pepper_stable>`_, `beta
93 </native-client/pepper_beta>`_ and `dev </native-client/pepper_dev>`_.
95 .. _installing-the-sdk:
97 Installing the SDK
98 ------------------
100 .. _downloading-and-unzipping:
102 Downloading and Unzipping
103 ^^^^^^^^^^^^^^^^^^^^^^^^^
105 #. Download the `SDK update zip file
106    <https://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip>`_.
108 #. Unzip the file:
110    * On Mac/Linux, run the command ``unzip nacl_sdk.zip`` in a terminal
111      window.
112    * On Windows, right-click on the .zip file and select "Extract All...". A
113      dialog box opens; enter a location and click "Extract".
115    A directory is created called ``nacl_sdk`` with the following files and
116    directories:
118    * ``naclsdk`` (and ``naclsdk.bat`` for Windows) --- the update utility,
119      which is the command you run to download and update bundles.
120    * ``sdk_cache`` --- a directory with a manifest file that lists the bundles
121      you have already downloaded.
122    * ``sdk_tools`` --- the code run by the ``naclsdk`` command.
124 .. _installing-the-stable-bundle:
126 Installing the stable bundle
127 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
129 #. To see the SDK bundles that are available for download, go to the 
130    ``nacl_sdk`` directory and run ``naclsdk`` with the ``list`` command. The SDK
131    includes a separate bundle for each version of Chrome/Pepper.
133    On Mac/Linux::
135      $ cd nacl_sdk
136      $ ./naclsdk list
138    On Windows::
140      > cd nacl_sdk
141      > naclsdk list
143    You should see output similar to this::
145     Bundles:
146      I: installed
147      *: update available
149       I  sdk_tools (stable)
150          vs_addin (dev)
151          pepper_31 (post_stable)
152          pepper_32 (post_stable)
153          pepper_33 (post_stable)
154          pepper_34 (post_stable)
155          pepper_35 (stable)
156          pepper_36 (beta)
157          pepper_37 (dev)
158          pepper_canary (canary)
159          bionic_canary (canary)
162    The sample output above shows that several bundles are available for
163    download, and that you have already installed the latest revision of the
164    ``sdk_tools`` bundle, which was included in the zip file. You never need to
165    update the ``sdk_tools`` bundle. It is updated automatically (if necessary)
166    whenever you run ``naclsdk``.
167    
168    Bundles are labeled post-stable, stable, beta, dev, or canary. These labels
169    usually correspond to the current versions of Chrome. We recommend that you
170    develop against a "stable" bundle, because such bundles can be used by all
171    current Chrome users. Native Client is designed to be backward-compatible.For
172    example, applications developed with the ``pepper_37`` bundle can run in
173    Chrome 37, Chrome 38, etc..
175 #. Run ``naclsdk`` with the ``update`` command to download recommended bundles,
176    including the current "stable" bundle.
178    On Mac/Linux::
180      $ ./naclsdk update
182    On Windows::
184      > naclsdk update
186    By default, ``naclsdk`` only downloads bundles that are recommended, 
187    generally those that are "stable." For example, if the current "stable"
188    bundle is ``pepper_35``, then the ``update`` downloads that bundle. To
189    download the ``pepper_36`` bundle you must ask for it explicitly::
191      $ ./naclsdk update pepper_36
192   
193    
195 .. _updating-bundles:
197 Updating bundles
198 ----------------
200 #. Run ``naclsdk`` with the ``list`` command. This shows you the list of available
201    bundles and verifies which bundles you have installed.
203    On Mac/Linux::
205      $ ./naclsdk list
207    On Windows::
209      > naclsdk list
210      
211    An asterisk (*) next to a bundle indicates that there is an update available
212    it. For example::
214     Bundles:
215      I: installed
216      *: update available
218       I  sdk_tools (stable)
219          vs_addin (dev)
220          pepper_31 (post_stable)
221          pepper_32 (post_stable)
222          pepper_33 (post_stable)
223          pepper_34 (post_stable)
224       I* pepper_35 (stable)
225          pepper_36 (beta)
226          pepper_37 (dev)
227          pepper_canary (canary)
228          bionic_canary (canary)
230    
231    If you run ``naclsdk update`` now, it warns you with a message similar to
232    this::
234      WARNING: pepper_35 already exists, but has an update available. Run update
235      with the --force option to overwrite the existing directory. Warning: This
236      will overwrite any modifications you have made within this directory.
238 #. To download and install the new bundle, run:
240    On Mac/Linux::
242      $ ./naclsdk update --force
244    On Windows::
246      > naclsdk update --force
248 .. _help-with-the-naclsdk-utility:
249      
250 Help with the ``naclsdk`` utility
251 ---------------------------------
253 #. For more information about the ``naclsdk`` utility, run:
255    On Mac/Linux::
257      $ ./naclsdk help
259    On Windows::
261      > naclsdk help
263 .. _next-steps:
265 Next steps
266 ----------
268 * Browse the `Release Notes <release-notes>`_ for important
269   information about the SDK and new bundles.
270 * If you're just starting with Native Client, we recommend reading the 
271   `Technical Overview <../overview>`_ and walking through the
272   `Getting Started Tutorial <devguide/tutorial/tutorial-part1>`_.
273 * If you'd rather dive in, see
274   `Building Native Client Modules <devguide/devcycle/building>`_.