Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(246)

Unified Diff: native_client_sdk/src/doc/sdk/examples.rst

Issue 588723002: Copy edit SDK section. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes from Patch Set 1 feedback. Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/doc/sdk/examples.rst
diff --git a/native_client_sdk/src/doc/sdk/examples.rst b/native_client_sdk/src/doc/sdk/examples.rst
index d92154617ed56b1b4b4547136816210e503dc8ed..fba95641cc15608c3da64cfe281c24a8e2155009 100644
--- a/native_client_sdk/src/doc/sdk/examples.rst
+++ b/native_client_sdk/src/doc/sdk/examples.rst
@@ -1,7 +1,7 @@
.. _sdk-examples-2:
-Running the SDK Examples
-========================
+Examples
+========
Every Native Client SDK bundle comes with a folder of example applications.
Each example demonstrates one or two key Native Client programming concepts.
@@ -9,22 +9,18 @@ After you've :doc:`downloaded the SDK <download>`, follow the instructions
on this page to build and run the examples.
Your version of Chrome must be equal to or greater than the version of your SDK
-bundle. For example, if you're developing with the ``pepper_31`` bundle, you
-must use Google Chrome version 31 or greater. To find out what version of Chrome
+bundle. For example, if you're developing with the ``pepper_35`` bundle, you
+must use Google Chrome version 35 or greater. To find out what version of Chrome
you're using, type ``about:chrome`` or ``about:version`` in the Chrome address
bar.
+.. _enable-native-client:
Enable Native Client
--------------------
-.. note::
- :class: note
-
- If you are using Chrome 31 or later, you can skip this section.
-
-To run Portable Native Client applications you must specifically enable Native
-Client in Chrome:
+If you are using Chrome 31 or later, you can skip this section. To run Portable
+Native Client applications you must specifically enable Native Client in Chrome:
#. Type ``about:flags`` in the Chrome address bar and scroll down to "Native
Client".
@@ -38,123 +34,95 @@ Client in Chrome:
#. Scroll down to the bottom of the page, and click "Relaunch Now". All browser
windows will restart when you relaunch Chrome.
-Disable the Chrome cache
-------------------------
-
-Chrome caches resources aggressively. When you are building a Native Client
-application you should disable the cache to make sure that Chrome loads the
-latest version.
-
-#. Open Chrome's developer tools by clicking the menu icon |menu-icon| and
- choosing Tools > Developer tools.
-
-#. Click the gear icon |gear-icon| in the bottom right corner of the Chrome
- window.
-
-#. Under the "General" settings, check the box next to "Disable cache".
+.. _build-the-sdk-examples:
Build the SDK examples
----------------------
-The Makefile scripts for the SDK examples build multiple versions of the
-examples using all three SDK toolchains (newlib, glibc, and PNaCl) and in both
-release and debug configurations. (Note that some examples build only with
-particular toolchains).
-
-Build all examples
-^^^^^^^^^^^^^^^^^^
+The Makefile scripts for the SDK examples can build multiple versions of the
+examples using any of the three SDK toolchains (newlib, glibc, and PNaCl) and in
+both release and debug configurations. Note that some examples, ``dlopen`` for
+example, build only with particular toolchains.
-To build all the examples, go to the examples directory in a specific SDK
-bundle and run ``make``::
+Find the toolchains for each example by looking at the ``VALID_TOOLCHAINS``
+variable in the Makefile for a particular example. The first item listed is the
+default. It's built when you run an example make file without parameters. for
+example running make in the ``core`` directory of pepper_35 builds the example
+using the ``newlib`` toolchain. ::
- $ cd pepper_31/examples
+ $ cd pepper_35/examples/api/core
$ make
- make -C api all
- make[1]: Entering directory `pepper_31/examples/api'
- make -C audio all
- make[2]: Entering directory `pepper_31/examples/api/audio'
- CXX newlib/Debug/audio_x86_32.o
- LINK newlib/Debug/audio_x86_32.nexe
- CXX newlib/Debug/audio_x86_64.o
- LINK newlib/Debug/audio_x86_64.nexe
- CXX newlib/Debug/audio_arm.o
- LINK newlib/Debug/audio_arm.nexe
- CREATE_NMF newlib/Debug/audio.nmf
- make[2]: Leaving directory `pepper_31/examples/api/audio'
- make -C url_loader all
- make[2]: Entering directory `pepper_31/examples/api/url_loader'
- CXX newlib/Debug/url_loader_x86_32.o
- ...
+ CXX newlib/Release/core_x86_32.o
+ LINK newlib/Release/core_unstripped_x86_32.nexe
+ VALIDATE newlib/Release/core_unstripped_x86_32.nexe
+ CXX newlib/Release/core_x86_64.o
+ LINK newlib/Release/core_unstripped_x86_64.nexe
+ VALIDATE newlib/Release/core_unstripped_x86_64.nexe
+ CXX newlib/Release/core_arm.o
+ LINK newlib/Release/core_unstripped_arm.nexe
+ VALIDATE newlib/Release/core_unstripped_arm.nexe
+ STRIP newlib/Release/core_x86_32.nexe
+ STRIP newlib/Release/core_x86_64.nexe
+ STRIP newlib/Release/core_arm.nexe
+ CREATE_NMF newlib/Release/core.nmf
+
+As you can see, this produces a number of architecture specific nexe files in
+the ``pepper_35/examples/api/core/Release`` directory. Create debug versions by
+using the ``CONFIG`` parameter of the make command. ::
+
+ $make CONFIG=Debug
-Build a single example
-^^^^^^^^^^^^^^^^^^^^^^
+This creates similar output, but in ``pepper_35/examples/api/core/Debug``.
-Calling ``make`` from inside a particular example's directory will build only
-that example::
-
- $ cd pepper_31/examples/api/core
- $ make
- CXX newlib/Debug/core_x86_32.o
- LINK newlib/Debug/core_x86_32.nexe
- CXX newlib/Debug/core_x86_64.o
- LINK newlib/Debug/core_x86_64.nexe
- CXX newlib/Debug/core_arm.o
- LINK newlib/Debug/core_arm.nexe
- CREATE_NMF newlib/Debug/core.nmf
-
-Override defaults
-^^^^^^^^^^^^^^^^^
-
-You can call ``make`` with the ``TOOLCHAIN`` and ``CONFIG`` parameters to
-override the defaults::
+Select a different toolchain with the ``TOOLCHAIN`` parameter. For example::
+ $ cd pepper_35/examples/api/core
$ make TOOLCHAIN=pnacl CONFIG=Release
- CXX pnacl/Release/core_pnacl.o
- LINK pnacl/Release/core.bc
- FINALIZE pnacl/Release/core.pexe
+ CXX pnacl/Release/core.o
+ LINK pnacl/Release/core_unstripped.bc
+ FINALIZE pnacl/Release/core_unstripped.pexe
CREATE_NMF pnacl/Release/core.nmf
+You can also set ``TOOLCHAIN`` to ``all`` to build all Release versions with
+default toolchains. ::
-You can also set ``TOOLCHAIN`` to "all" to build one or more examples with
-all available toolchains::
-
+ $ cd pepper_35/examples/api/core
$ make TOOLCHAIN=all
- make TOOLCHAIN=newlib
- make[1]: Entering directory `pepper_31/examples/api/core'
- CXX newlib/Debug/core_x86_32.o
- LINK newlib/Debug/core_x86_32.nexe
- CXX newlib/Debug/core_x86_64.o
- LINK newlib/Debug/core_x86_64.nexe
- CXX newlib/Debug/core_arm.o
- LINK newlib/Debug/core_arm.nexe
- CREATE_NMF newlib/Debug/core.nmf
- make[1]: Leaving directory `pepper_31/examples/api/core'
- make TOOLCHAIN=glibc
- make[1]: Entering directory `pepper_31/examples/api/core'
- CXX glibc/Debug/core_x86_32.o
- LINK glibc/Debug/core_x86_32.nexe
- CXX glibc/Debug/core_x86_64.o
- LINK glibc/Debug/core_x86_64.nexe
- CREATE_NMF glibc/Debug/core.nmf
- make[1]: Leaving directory `pepper_31/examples/api/core'
- make TOOLCHAIN=pnacl
- make[1]: Entering directory `pepper_31/examples/api/core'
- CXX pnacl/Debug/core.o
- LINK pnacl/Debug/core_unstripped.bc
- FINALIZE pnacl/Debug/core_unstripped.pexe
- CREATE_NMF pnacl/Debug/core.nmf
- make[1]: Leaving directory `pepper_31/examples/api/core'
- make TOOLCHAIN=linux
- make[1]: Entering directory `pepper_31/examples/api/core'
- CXX linux/Debug/core.o
- LINK linux/Debug/core.so
- make[1]: Leaving directory `pepper_31/examples/api/core'
+ make TOOLCHAIN=newlib
+ make[1]: Entering directory 'pepper_35/examples/api/core'
+ CXX newlib/Release/core_x86_32.o
+ LINK newlib/Release/core_unstripped_x86_32.nexe
+ VALIDATE newlib/Release/core_unstripped_x86_32.nexe
+ CXX newlib/Release/core_x86_64.o
+ LINK newlib/Release/core_unstripped_x86_64.nexe
+ VALIDATE newlib/Release/core_unstripped_x86_64.nexe
+ CXX newlib/Release/core_arm.o
+ LINK newlib/Release/core_unstripped_arm.nexe
+ VALIDATE newlib/Release/core_unstripped_arm.nexe
+ STRIP newlib/Release/core_x86_32.nexe
+ STRIP newlib/Release/core_x86_64.nexe
+ STRIP newlib/Release/core_arm.nexe
+ CREATE_NMF newlib/Release/core.nmf
+ make[1]: Leaving directory 'pepper_35/examples/api/core'
+ make TOOLCHAIN=glibc
+ make[1]: Entering directory 'pepper_35/examples/api/core'
+ CXX glibc/Release/core_x86_32.o
+ LINK glibc/Release/core_unstripped_x86_32.nexe
+ VALIDATE glibc/Release/core_unstripped_x86_32.nexe
+ CXX glibc/Release/core_x86_64.o
+ LINK glibc/Release/core_unstripped_x86_64.nexe
+ VALIDATE glibc/Release/core_unstripped_x86_64.nexe
+ ...
+ (content excerpted)
+ ...
+
+.. _build-results:
Build results
--------------
+^^^^^^^^^^^^^
-After running ``make``, each example directory will contain one or more of
-the following subdirectories:
+After running ``make``, example directories will contain one or more of the
+following subdirectories, depending on which Makefile you run:
* ``newlib`` with subdirectories ``Debug`` and ``Release``;
* ``glibc`` with subdirectories ``Debug`` and ``Release``;
@@ -178,22 +146,49 @@ use the SDK toolchain itself, see :doc:`Building Native Client Modules
Run the SDK examples
--------------------
-To run the SDK examples, you can use the ``make run`` command::
+.. _disable-chrome-cache:
+
+Disable the Chrome cache
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Chrome's intelligent caching caches resources aggressively. When building a
+Native Client application you should disable the cache to make sure that Chrome
+loads the latest version. Intelligent caching only remains inactive while
+Developer Tools are open. Otherwise, agressive caching continues.
+
+#. Open Chrome's developer tools by clicking the menu icon |menu-icon| and
+ choosing Tools > Developer tools.
+
+#. Click the gear icon |gear-icon| in the bottom right corner of the Chrome
+ window.
+
+#. Under the "General" settings, check the box next to "Disable cache".
- $ cd pepper_31/examples/api/core
+.. _run-the-examples:
+
+Run the examples
+^^^^^^^^^^^^^^^^
+
+To run the SDK examples, use the ``make run`` command::
+
+ $ cd pepper_35/examples/api/core
$ make run
-This will launch a local HTTP server which will serve the data for the
-example. It then launches Chrome with the address of this server, usually
-``http://localhost:5103``. After you close Chrome, the local HTTP server is
-automatically shutdown.
+This launches a local HTTP server that serves the example. It then launches
+Chrome with the address of this server, usually ``http://localhost:5103``.
+After you close Chrome, the local HTTP server automatically shuts down.
-This command will try to find an executable named ``google-chrome`` in your
+This command tries to find an executable named ``google-chrome`` in your
``PATH`` environment variable. If it can't, you'll get an error message like
this::
- pepper_31/tools/common.mk:415: No valid Chrome found at CHROME_PATH=
- pepper_31/tools/common.mk:415: *** Set CHROME_PATH via an environment variable, or command-line.. Stop.
+ pepper_35/tools/common.mk:415: No valid Chrome found at CHROME_PATH=
+ pepper_35/tools/common.mk:415: *** Set CHROME_PATH via an environment variable, or command-line.. Stop.
+
+.. _add-an-env-variable-for-chrome:
+
+Add an environment variable for Chrome
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Set the CHROME_PATH environment variable to the location of your Chrome
executable.
@@ -204,7 +199,7 @@ executable.
``C:\Program Files (x86)\Google\Chrome\Application\chrome.exe`` for Chrome
stable and
``C:\Users\<username>\AppData\Local\Google\Chrome SxS\Application\chrome.exe``
- for Chrome Canary; try looking in those directories first::
+ for Chrome Canary. Try looking in those directories first::
> set CHROME_PATH=<Path to chrome.exe>
@@ -222,31 +217,27 @@ executable.
application bundle, not the top-level ``.app`` directory::
$ export CHROME_PATH=<Path to Google Chrome>
-
-You can run via a different toolchain or configuration by using the
-``TOOLCHAIN`` and ``CONFIG`` parameters to make::
-
- $ make run TOOLCHAIN=pnacl CONFIG=Debug
-
+
.. _run_sdk_examples_as_packaged:
Run the SDK examples as packaged apps
-------------------------------------
-Each example can also be launched as a packaged app. For more information about
-using Native Client for packaged apps, see :ref:`Packaged application
-<distributing_packaged>`. For general information about packaged apps, see the
-`Chrome apps documentation </apps/about_apps>`_.
+Each example can also be launched as a packaged application. A packaged
+application is a special zip file (with a .crx extension) hosted in the Chrome
+Web Store. This file contains all of the application parts: A Chrome Web Store
+manifest file (manifest.json), an icon, and all of the regular Native Client
+application files. Refer to `What are Chrome Apps </apps/about_apps>`_ for more
+information about creating a packaged application.
Some Pepper features, such as TCP/UDP socket access, are only allowed in
-packaged apps. The examples that use these features must be run as packaged
-apps, by using the ``make run_package`` command::
+packaged applications. The examples that use these features must be run as
+packaged applications, by using the following command::
$ make run_package
-You can use ``TOOLCHAIN`` and ``CONFIG`` parameters as above to run with a
-different toolchain or configuration.
-
+You can use ``TOOLCHAIN`` and ``CONFIG`` parameters as described above to run
+with a different toolchain or configuration.
.. _debugging_the_sdk_examples:
@@ -259,15 +250,14 @@ NaCl code. To use it, run the ``make debug`` command from an example directory::
$ make debug
-This will launch Chrome with the ``--enable-nacl-debug`` flag set. This flag
-will cause Chrome to pause when a NaCl module is first loaded, waiting for a
-connection from gdb. The ``make debug`` command also simultaneously launches
-GDB and loads the symbols for that NEXE. To connect GDB to Chrome, in the GDB
-console, type::
+This launches Chrome with the ``--enable-nacl-debug`` flag set. This flag causes
+Chrome to pause when a NaCl module is first loaded, waiting for a connection
+from gdb. The ``make debug`` command also simultaneously launches GDB and loads
+the symbols for that NEXE. To connect GDB to Chrome, in the GDB console, type::
(gdb) target remote :4014
-This tells GDB to connect to a TCP port on ``localhost:4014``--the port that
+This tells GDB to connect to a TCP port on ``localhost:4014``, the port that
Chrome is listening on. GDB will respond::
Remote debugging using :4014
@@ -275,9 +265,9 @@ Chrome is listening on. GDB will respond::
At this point, you can use the standard GDB commands to debug your NaCl module.
The most common commands you will use to debug are ``continue``, ``step``,
-``next``, ``break`` and ``backtrace``. See :doc:`Debugging
-<../devguide/devcycle/debugging>` for more information about debugging a Native Client
-application.
+``next``, ``break`` and ``backtrace``. See
+:doc:`Debugging <../devguide/devcycle/debugging>` for more information about
+debugging a Native Client application.
.. |menu-icon| image:: /images/menu-icon.png
« native_client_sdk/src/doc/sdk/download.rst ('K') | « native_client_sdk/src/doc/sdk/download.rst ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698