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

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

Issue 23835002: [NaCl docs] Initial commit of the new docs infrastructure into Chromium. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Ignore Sphinx-y code in presubmit Created 7 years, 4 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
« no previous file with comments | « native_client_sdk/src/doc/sdk/download.rst ('k') | native_client_sdk/src/doc/sdk/release-notes.rst » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
new file mode 100644
index 0000000000000000000000000000000000000000..c11a5fffcc8095059edf25964626e065dc89765c
--- /dev/null
+++ b/native_client_sdk/src/doc/sdk/examples.rst
@@ -0,0 +1,249 @@
+.. _sdk-examples-2:
+
+Running the SDK Examples
+========================
+
+Every Native Client SDK bundle comes with a folder of example applications.
+Each example demonstrates one or two key Native Client programming concepts.
+After you've :doc:`downloaded the SDK <download>`, follow the instructions
+on this page to build and run the examples.
+
+Configure the Google Chrome Browser
+-----------------------------------
+
+1. 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_28``
+ bundle, you must use Google Chrome version 28 or greater. To find out what
+ version of Chrome you're using, type ``about:chrome`` or ``about:version``
+ in the Chrome address bar.
+
+2. Enable the Native Client flag. Native Client is enabled by default only
+ for applications distributed through the Chrome Web Store. To run Native
+ Client applications that are not distributed through the Chrome Web Store,
+ like the SDK examples, you must specifically enable the Native Client flag
+ in Chrome:
+
+ * Type ``about:flags`` in the Chrome address bar and scroll down to
+ "Native Client".
+ * If the link below "Native Client" says "Disable", then Native Client is
+ already enabled and you don't need to do anything else.
+ * If the link below "Native Client" says "Enable", click the "Enable"
+ link, scroll down to the bottom of the page, and click the "Relaunch
+ Now" button. All browser windows will restart when you relaunch Chrome.
+
+3. 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
+----------------------
+
+Starting with the ``pepper_24`` bundle, 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 the particular
+toolchains).
+
+To build all the examples, go to the examples directory in a specific SDK
+bundle and run ``make``::
+
+ $ cd pepper_28/examples
+ $ make
+ make -C api all
+ make[1]: Entering directory `pepper_28/examples/api'
+ make -C audio all
+ make[2]: Entering directory `pepper_28/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_28/examples/api/audio'
+ make -C url_loader all
+ make[2]: Entering directory `pepper_28/examples/api/url_loader'
+ CXX newlib/Debug/url_loader_x86_32.o
+ ...
+
+Calling ``make`` from inside a particular example's directory will build only
+that example::
+
+ $ cd pepper_28/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
+
+You can call ``make`` with the ``TOOLCHAIN`` and ``CONFIG`` parameters to
+override the defaults::
+
+ $ make TOOLCHAIN=pnacl CONFIG=Release
+ CXX pnacl/Release/core_pnacl.o
+ LINK pnacl/Release/core.bc
+ FINALIZE pnacl/Release/core.pexe
+ CREATE_NMF pnacl/Release/core.nmf
+
+
+You can also set ``TOOLCHAIN`` to "all" to build one or more examples with
+all available toolchains::
+
+ $ 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_pnacl.o
+ LINK pnacl/Debug/core.bc
+ FINALIZE pnacl/Debug/core.pexe
+ TRANSLATE pnacl/Debug/core_x86_32.nexe
+ TRANSLATE pnacl/Debug/core_x86_64.nexe
+ TRANSLATE pnacl/Debug/core_arm.nexe
+ 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'
+
+
+After running ``make``, each example directory will contain one or more of
+the following subdirectories:
+
+* a ``newlib`` directory with subdirectories ``Debug`` and ``Release``;
+* a ``glibc`` directory with subdirectories ``Debug`` and ``Release``;
+* a ``pnacl`` directory with subdirectories ``Debug`` and ``Release``;
+
+For the newlib and glibc toolchains the Debug and Release subdirectories
+contain .nexe files for all target architectures. For the PNaCl toolchain
+they contain a single .pexe file. PNaCl debug also produces pre-translated
+.nexe files, for ease of debugging. All Debug and Release directories contain
+a manifest (.nmf) file that references the associated .nexe or .pexe files.
+For information about Native Client manifest files, see the :doc:`Technical
+Overview <../overview>`.
+
+For details on how to use ``make``, see the `GNU 'make' Manual
+<http://www.gnu.org/software/make/manual/make.html>`_. For details on how to
+use the SDK toolchain itself, see :doc:`Building Native Client Modules
+<devcycle/building>`.
+
+Run the SDK examples
+--------------------
+
+To run the SDK examples, you can use the ``make run`` command::
+
+ $ cd pepper_28/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 command will try 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.
+
+Set the CHROME_PATH environment variable to the location of your Chrome
+executable **TODO(binji):** use default Chrome paths here, especially
+important for Mac:
+
+ On Windows::
+
+ > set CHROME_PATH=<Path to chrome.exe>
+
+ On Linux::
+
+ $ export CHROME_PATH=<Path to google-chrome>
+
+ On Mac::
+
+ $ export CHROME_PATH=<Path to 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 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 appliction
+<packaged>`. For general information about packaged apps, see the
+`Chrome apps documentation
+<http://developer.chrome.com/apps/about_apps.html>`_.
+
+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::
+
+ $ make run_package
+
+You can use ``TOOLCHAIN`` and ``CONFIG`` parameters as above to run with a
+different toolchain or configuration.
+
+Debugging the SDK examples
+--------------------------
+
+The NaCl SDK uses `GDB <https://www.gnu.org/software/gdb/>`_ to debug Native
+Client code. The SDK includes a prebuilt version of GDB that is compatible with
+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::
+
+ (gdb) target remote :4014
+
+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
+ 0x000000000fa00080 in ?? ()
+
+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
+<devcycle/debugging>` for more information about debugging a Native Client
+application.
+
+
+.. |menu-icon| image:: /images/menu-icon.png
+.. |gear-icon| image:: /images/gear-icon.png
« no previous file with comments | « native_client_sdk/src/doc/sdk/download.rst ('k') | native_client_sdk/src/doc/sdk/release-notes.rst » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698