Download the Native Client SDK
==============================
-Follow the steps below to download and install the SDK:
+This page provides an overview of the Native Client SDK, and instructions for
+downloading and installing the SDK.
+
+.. raw:: html
+
+ <div id="home">
+ <a class="button-nacl button-download" href="http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip">Download SDK Zip File</a>
+ </div>
+
+.. _sdk-overview:
+
+Overview
+--------
+
+The Native Client SDK includes:
+
+- **Support for multiple Pepper versions** to compile for specific minimum
+ versions of Chrome.
+- **Update utility** to download new bundles and updates to existing bundles.
+- **Toolchains** to compile for Portable Native Client (PNaCl), traditional
+ Native Client (NaCl), and for compiling architecture-specific Native Client
+ applications with glibc.
+- **Examples** Including C or C++ source files and header files illustrating
+ how to use NaCl and Pepper, and Makefiles to build the example with each of
+ the toolchains.
+- **Tools** for validating Native Client modules and running modules from the
+ command line.
+
+Follow the steps below to download and install the Native Client SDK.
+
+.. _prerequisites:
Prerequisites
-------------
-* Python: Make sure you have Python 2.6 or 2.7 installed, and that the Python
- executable is in your path.
-
- * On Mac/Linux, Python is probably preinstalled. Run the command ``"python
- -V``" in a terminal window, and make sure that the version of Python you
- have is 2.6.x or 2.7.x (if it's not, upgrade to one of those versions).
- * On Windows, you may need to install Python. Go to
- `http://www.python.org/download/ <http://www.python.org/download/>`_ and
- select the latest 2.x version. In addition, be sure to add the Python
- directory (for example, ``C:\python27``) to the PATH `environment
- variable <http://en.wikipedia.org/wiki/Environment_variable>`_. After
- you've installed Python, run the command ``"python -V``" in a Command
- Prompt window and verify that the version of Python you have is 2.6.x or
- 2.7.x.
- * Note that Python 3.x is not yet supported.
-
-* Make: On the Mac, you need to install the ``make`` command on your system before
- you can build and run the examples. One easy way to get ``make``, along
- with several other useful tools, is to install `Xcode Developer Tools
- <https://developer.apple.com/technologies/tools/>`_. After installing
- Xcode, go to the Preferences menu, select Downloads and Components, and
- verify that Command Line Tools are installed. If you'd rather not install
- Xcode, you can download and build an `open source version
- <http://mac.softpedia.com/dyn-postdownload.php?p=44632&t=4&i=1>`_ of
- ``make``. In order to build the command you may also need to download and
- install a copy of `gcc
+.. _python26-27:
+
+Python 2.7
+^^^^^^^^^^^^^^^^^
+
+Make sure that the Python executable is in your ``PATH`` variable. Python 3.x is
+not yet supported.
+
+* On Mac and Linux, Python is likely preinstalled. Run the command ``python -V``
+ in a terminal window, and make sure that the version you have is 2.6.x or
+ 2.7.x.
+* On Windows, you may need to install Python. Go to `http://www.python.org/
+ download/ <http://www.python.org/download/>`_ and select the latest 2.x
+ version. In addition, be sure to add the Python directory (for example,
+ ``C:\python27``) to the ``PATH`` `environment variable <http://en.wikipedia.
+ org/wiki/Environment_variable>`_. Run ``python -V`` from a command line to
+ verify that you properly configured the PATH variable.
+
+.. _make:
+
+Make
+^^^^
+
+* On the Mac, you need to install ``make`` on your system before you can build
+ and run the examples in the SDK. One easy way to get ``make``, along with
+ several other useful tools, is to install `Xcode Developer Tools
+ <https://developer.apple.com/technologies/tools/>`_. After installing Xcode,
+ go to the XCode menu, open the Preferences dialog box then select Downloads
+ and Components. Verify that Command Line Tools are installed. If you'd rather
+ not install Xcode, you can download and build an `open source version
+ <http://mac.softpedia.com/dyn-postdownload.php?p=44632&t=4&i=1>`_ of ``make``.
+ To build the program you may also need to download and install `gcc
<https://github.com/kennethreitz/osx-gcc-installer>`_.
+* On Windows, the Native Client SDK includes a copy of GNU Make.
+
+.. _platforms:
+
+Platforms
+---------
+
+Native Client supports several operating systems, including Windows, Linux, OSX,
+and ChromeOS. It supports several architectures including on x86-32, x86-64,
+ARM, and MIPS.
+
+.. _versioning:
-Download Steps
---------------
+Versions
+--------
-#. Download the SDK update utility: `nacl_sdk.zip
+Chrome is released on a six week cycle, and developer versions of Chrome are
+pushed to the public beta channel three weeks before each release. As with any
+software, each release of Chrome may include changes to Native Client and the
+Pepper interfaces that may require modification to existing applications.
+However, modules compiled for one version of Pepper/Chrome should work with
+subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the
+Pepper APIs to help developers make adjustments to API changes and take
+advantage of new features: `stable </native-client/pepper_stable>`_, `beta
+</native-client/pepper_beta>`_ and `dev </native-client/pepper_dev>`_.
+
+.. _installing-the-sdk:
+
+Installing the SDK
+------------------
+
+.. _downloading-and-unzipping:
+
+Downloading and Unzipping
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+#. Download the `SDK update zip file
<http://storage.googleapis.com/nativeclient-mirror/nacl/nacl_sdk/nacl_sdk.zip>`_.
-#. Unzip the SDK update utility:
+#. Unzip the file:
- * On Mac/Linux, run the command "``unzip nacl_sdk.zip``" in a Terminal window.
+ * On Mac/Linux, run the command ``unzip nacl_sdk.zip`` in a terminal
+ window.
* On Windows, right-click on the .zip file and select "Extract All...". A
- dialog box will open; enter a location and click "Extract".
+ dialog box opens; enter a location and click "Extract".
+
+ A directory is created called ``nacl_sdk`` with the following files and
+ directories:
- Unzipping the SDK update utility creates a directory called ``nacl_sdk`` with
- the following files and directories:
+ * ``naclsdk`` (and ``naclsdk.bat`` for Windows) --- the update utility,
+ which is the command you run to download and update bundles.
+ * ``sdk_cache`` --- a directory with a manifest file that lists the bundles
+ you have already downloaded.
+ * ``sdk_tools`` --- the code run by the ``naclsdk`` command.
- * ``naclsdk`` (and ``naclsdk.bat`` for Windows) --- the front end of the update
- utility, i.e., the command you run to download the latest bundles
- * ``sdk_cache`` --- a directory with a manifest file that lists the bundles you
- have already downloaded
- * ``sdk_tools`` --- the back end of the update utility, also known as the
- "sdk_tools" bundle
+.. _installing-the-stable-bundle:
-#. See which SDK versions are available: Go to the ``nacl_sdk`` directory and
- run ``naclsdk`` with the ``"list"`` command to see a list of available bundles.
- The SDK includes a separate bundle for each version of Chrome/Pepper
- (see versioning information).
+Installing the stable bundle
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+#. To see the SDK bundles that are available for download, go to the
+ ``nacl_sdk`` directory and run ``naclsdk`` with the ``list`` command. The SDK
+ includes a separate bundle for each version of Chrome/Pepper.
On Mac/Linux::
I sdk_tools (stable)
vs_addin (dev)
- pepper_26 (post_stable)
- pepper_27 (post_stable)
- pepper_28 (post_stable)
- pepper_29 (post_stable)
- pepper_30 (stable)
- pepper_31 (beta)
+ pepper_31 (post_stable)
+ pepper_32 (post_stable)
+ pepper_33 (post_stable)
+ pepper_34 (post_stable)
+ pepper_35 (stable)
+ pepper_36 (beta)
+ pepper_37 (dev)
pepper_canary (canary)
+ bionic_canary (canary)
+
- This sample output shows many bundles available for download, and that you
- have already installed the latest revision of the sdk_tools bundle (it was
- included in the zip file you downloaded). Note that the bundles are labelled
- "post-stable", "stable", "beta", "dev" and "canary". These labels correspond
- to the current versions of Chrome. In this example, Chrome 30 is stable,
- Chrome 31 is beta, etc. Therefore ``pepper_30`` is the recommended bundle to
- download, because if you released an application that used it today, it
- could be used by all current Chrome users. Note that Native Client is
- designed to be backward compatible---users of Chrome 31 can use the features
- of ``pepper_30`` and earlier.
+ The sample output above shows that several bundles are available for
+ download, and that you have already installed the latest revision of the
+ ``sdk_tools`` bundle, which was included in the zip file. You never need to
+ update the ``sdk_tools`` bundle. It is updated automatically (if necessary)
+ whenever you run ``naclsdk``.
+
+ Bundles are labeled post-stable, stable, beta, dev, or canary. These labels
+ usually correspond to the current versions of Chrome. We recommend that you
+ develop against a "stable" bundle, because such bundles can be used by all
+ current Chrome users. Native Client is designed to be backward-compatible.For
+ example, applications developed with the ``pepper_37`` bundle can run in
+ Chrome 37, Chrome 38, etc..
-#. Run ``naclsdk`` with the "update" command to download particular bundles that
- are available.
+#. Run ``naclsdk`` with the ``update`` command to download recommended bundles,
+ including the current "stable" bundle.
On Mac/Linux::
> naclsdk update
- By default, ``naclsdk`` only downloads bundles that are recommended. In
- general, only the "stable" bundles are recommended. Continuing with the
- earlier example, the "update" command would only download the ``pepper_30``
- bundles, since the bundles ``pepper_31`` and greater are not yet recommended.
- If you want the ``pepper_31`` bundle, you must ask for it explicitly::
-
- $ ./naclsdk update pepper_31
+ By default, ``naclsdk`` only downloads bundles that are recommended,
+ generally those that are "stable." For example, if the current "stable"
+ bundle is ``pepper_35``, then the ``update`` downloads that bundle. To
+ download the ``pepper_36`` bundle you must ask for it explicitly::
- Note that you never need update the ``sdk_tools`` bundle, it is
- updated automatically as necessary whenever ``naclsdk`` is run.
+ $ ./naclsdk update pepper_36
+
+
-.. Note::
- :class: note
+.. _updating-bundles:
- The minimum SDK version that supports PNaCl is ``pepper_31``.
+Updating bundles
+----------------
-Staying up-to-date and getting new versions
--------------------------------------------
-
-#. Run ``naclsdk`` with the "list" command again; this will show you the list of
- available bundles and verify which bundles are installed.
+#. Run ``naclsdk`` with the ``list`` command. This shows you the list of available
+ bundles and verifies which bundles you have installed.
On Mac/Linux::
On Windows::
> naclsdk list
-
- Continuing with the earlier example, if you previously downloaded the
- ``pepper_30`` bundle, you should see output similar to this::
+
+ An asterisk (*) next to a bundle indicates that there is an update available
+ it. For example::
Bundles:
I: installed
I sdk_tools (stable)
vs_addin (dev)
- pepper_26 (post_stable)
- pepper_27 (post_stable)
- pepper_28 (post_stable)
- pepper_29 (post_stable)
- I pepper_30 (stable)
- pepper_31 (beta)
+ pepper_31 (post_stable)
+ pepper_32 (post_stable)
+ pepper_33 (post_stable)
+ pepper_34 (post_stable)
+ I* pepper_35 (stable)
+ pepper_36 (beta)
+ pepper_37 (dev)
pepper_canary (canary)
+ bionic_canary (canary)
-#. Running ``naclsdk`` with the "update" command again will verify that your
- bundles are up-to-date, or warn if you there are new versions of previously
- installed bundles.
+
+ If you run ``naclsdk update`` now, it warns you with a message similar to
+ this::
- On Mac/Linux::
-
- $ ./naclsdk update
-
- On Windows::
-
- > naclsdk update
-
- Continuing with the earlier example, you should see output similar to this::
-
- pepper_30 is already up-to-date.
-
-#. To check if there is a new version of a previously installed bundle, you can
- run the "list" command again::
-
- Bundles:
- I: installed
- *: update available
+ WARNING: pepper_35 already exists, but has an update available. Run update
+ with the --force option to overwrite the existing directory. Warning: This
+ will overwrite any modifications you have made within this directory.
- I sdk_tools (stable)
- vs_addin (dev)
- pepper_26 (post_stable)
- pepper_27 (post_stable)
- pepper_28 (post_stable)
- pepper_29 (post_stable)
- I* pepper_30 (stable)
- pepper_31 (beta)
- pepper_canary (canary)
-
- The asterisk next to the bundle name indicates that there is an update
- available. If you run the "update" command now, ``naclsdk`` will warn you
- with a message similar to this::
-
- WARNING: pepper_30 already exists, but has an update available.
- Run update with the --force option to overwrite the existing directory.
- Warning: This will overwrite any modifications you have made within this directory.
-
- To dowload the new version of a bundle and overwrite the existing directory
- for that bundle, run ``naclsdk`` with the ``--force`` option.
+#. To download and install the new bundle, run:
On Mac/Linux::
> naclsdk update --force
+.. _help-with-the-naclsdk-utility:
+
+Help with the ``naclsdk`` utility
+---------------------------------
+
#. For more information about the ``naclsdk`` utility, run:
On Mac/Linux::
> naclsdk help
-Next steps:
+.. _next-steps:
+
+Next steps
+----------
-* Browse through the :doc:`Release Notes <release-notes>` for important
+* Browse the `Release Notes <release-notes>`_ for important
information about the SDK and new bundles.
-* If you're just getting started with Native Client, we recommend reading
- the :doc:`Technical Overview <../overview>` and walking through the
- :doc:`Getting Started Tutorial </devguide/tutorial/index>`.
-* If you'd rather dive into information about the toolchains, see
- :doc:`Building Native Client Modules </devguide/devcycle/building>`.
+* If you're just starting with Native Client, we recommend reading the
+ `Technical Overview <../overview>`_ and walking through the
+ `Getting Started Tutorial <devguide/tutorial/tutorial-part1>`_.
+* If you'd rather dive in, see
+ `Building Native Client Modules <devguide/devcycle/building>`_.