| Index: native_client_sdk/doc_generated/io2014.html
|
| diff --git a/native_client_sdk/doc_generated/io2014.html b/native_client_sdk/doc_generated/io2014.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8943748abfa3276dfeb52948306a4254ec157ee7
|
| --- /dev/null
|
| +++ b/native_client_sdk/doc_generated/io2014.html
|
| @@ -0,0 +1,165 @@
|
| +{{+bindTo:partials.standard_nacl_article}}
|
| +
|
| +<section id="building-a-nacl-app">
|
| +<h1 id="building-a-nacl-app">Building a NaCl App</h1>
|
| +<section id="in-the-browser">
|
| +<h2 id="in-the-browser">In the browser!</h2>
|
| +<p>Follow along with Brad Nelson’s Google I/O 2014 talk.
|
| +Explore our new in-browser development environment and debugger.</p>
|
| +<p>Learn how easy it is to edit, build, and debug NaCl application
|
| +all in your desktop web browser or on a Chromebook.
|
| +Work either on-line or off-line!</p>
|
| +<iframe class="video" width="640" height="360"
|
| +src="//www.youtube.com/embed/MvKEomoiKBA?rel=0" frameborder="0"></iframe><section id="installation">
|
| +<h3 id="installation">Installation</h3>
|
| +<p>The setup process currently requires several steps.
|
| +We’re working to reduce the number of steps in future releases.
|
| +As the process gets easier, we’ll update this page.</p>
|
| +<p>You currently need to:</p>
|
| +<ul class="small-gap">
|
| +<li><p class="first">Navigate to: chrome://flags and:</p>
|
| +<ul class="small-gap">
|
| +<li>Enable <strong>Native Client</strong>.</li>
|
| +<li>Enable <strong>Native Client GDB-based debugging</strong>. (For the debugger)</li>
|
| +</ul>
|
| +</li>
|
| +<li><p class="first">Install the NaCl in-browser debugger.</p>
|
| +<ul class="small-gap">
|
| +<li>Install the <a class="reference external" href="https://chrome.google.com/webstore/detail/nacl-debugger/ncpkkhabohglmhjibnloicgdfjmojkfd">NaCl Debugger</a>.</li>
|
| +<li>Install <a class="reference external" href="https://chrome.google.com/webstore/detail/gdb/gkjoooooiaohiceibmdleokniplmbahe">GDB</a>.</li>
|
| +</ul>
|
| +</li>
|
| +<li><p class="first">Install the <a class="reference external" href="https://chrome.google.com/webstore/detail/nacl-development-environm/aljpgkjeipgnmdpikaajmnepbcfkglfa">NaCl Development Environment</a>.</p>
|
| +<ul class="small-gap">
|
| +<li>First run is slow (as it downloads and installs packages).</li>
|
| +</ul>
|
| +</li>
|
| +</ul>
|
| +</section><section id="editor">
|
| +<h3 id="editor">Editor</h3>
|
| +<p>To follow along in this tutorial, you’ll need to use a text editor to modify
|
| +various files in our development environment.
|
| +There are currently two editor options, nano or vim.
|
| +Emacs is coming soon...
|
| +If you’re unsure what to pick, nano is simpler to start with and has on-screen
|
| +help.</p>
|
| +<ul class="small-gap">
|
| +<li><p class="first">You can open <strong>nano</strong> like this:</p>
|
| +<pre class="prettyprint">
|
| +$ nano <filename>
|
| +</pre>
|
| +<p>Here’s an online <a class="reference external" href="http://mintaka.sdsu.edu/reu/nano.html">nano tutorial</a>.</p>
|
| +</li>
|
| +<li><p class="first">You can open <strong>vim</strong> like this:</p>
|
| +<pre class="prettyprint">
|
| +$ vim <filename>
|
| +</pre>
|
| +<p>Here’s an online <a class="reference external" href="http://www.openvim.com/tutorial.html">vim tutorial</a>.</p>
|
| +</li>
|
| +</ul>
|
| +</section><section id="git-setup">
|
| +<h3 id="git-setup">Git Setup</h3>
|
| +<p>This tutorial also uses a revision control program called
|
| +<a class="reference external" href="http://en.wikipedia.org/wiki/Git_(software)">git</a>.
|
| +In order to commit to a git repository,
|
| +you need to setup your environment to with your identity.</p>
|
| +<p>You’ll need to add these lines to <cite>~/.bashrc</cite> to cause them to be invoked each
|
| +time you start the development environment.</p>
|
| +<pre class="prettyprint">
|
| +git config --global user.name "John Doe"
|
| +git config --global user.email johndoe@example.com
|
| +</pre>
|
| +</section><section id="tour-follow-the-video">
|
| +<h3 id="tour-follow-the-video">Tour (follow the video)</h3>
|
| +<p>Create a working directory and go into it:</p>
|
| +<pre class="prettyprint">
|
| +$ mkdir work
|
| +$ cd work
|
| +</pre>
|
| +<p>Download a zip file containing our sample:</p>
|
| +<pre class="prettyprint">
|
| +$ curl http://nacltools.storage.googleapis.com/io2014/voronoi.zip -O
|
| +$ ls -l
|
| +</pre>
|
| +<p>Unzip the sample:</p>
|
| +<pre class="prettyprint">
|
| +$ unzip voronoi.zip
|
| +</pre>
|
| +<p>Go into the sample and take a look at the files inside:</p>
|
| +<pre class="prettyprint">
|
| +$ cd voronoi
|
| +$ ls
|
| +</pre>
|
| +<p>Our project combines voronoi.cc with several C++ libraries to produce a NEXE
|
| +(or Native Client Executable).</p>
|
| +<img alt="/native-client/images/voronoi1.png" src="/native-client/images/voronoi1.png" />
|
| +<p>The resulting application combines the NEXE with some Javascript to load
|
| +the NaCl module, producing the complete application.</p>
|
| +<img alt="/native-client/images/voronoi2.png" src="/native-client/images/voronoi2.png" />
|
| +<p>Let’s use git (a revision control program) to track our changes.</p>
|
| +<p>First, create a new repository:</p>
|
| +<pre class="prettyprint">
|
| +$ git init
|
| +</pre>
|
| +<p>Add everything here:</p>
|
| +<pre class="prettyprint">
|
| +$ git add .
|
| +</pre>
|
| +<p>Then commit our starting state:</p>
|
| +<pre class="prettyprint">
|
| +$ git commit -m "imported voronoi demo"
|
| +</pre>
|
| +<p>Now, lets invoke the bash build script to compile our program:</p>
|
| +<pre class="prettyprint">
|
| +$ ./build.sh
|
| +</pre>
|
| +<p>Oops, we get this error:</p>
|
| +<pre class="prettyprint">
|
| +voronoi.cc: In member function 'void Voronoi::Update()':
|
| +voronoi.cc:506: error: 'struct PSContext2D_t' has no member named 'hieght'
|
| +</pre>
|
| +<p>We’ll need to start an editor to fix this.
|
| +You’ll want to change <em>hieght</em> to <em>height</em> on line 506.
|
| +Then rebuild:</p>
|
| +<pre class="prettyprint">
|
| +$ bash build.sh
|
| +</pre>
|
| +<p>Lets look at the diff:</p>
|
| +<pre class="prettyprint">
|
| +$ git diff
|
| +</pre>
|
| +<p>And commit our fix:</p>
|
| +<pre class="prettyprint">
|
| +$ git commit -am "fixed build error"
|
| +</pre>
|
| +<p>We can now run the demo with this command:</p>
|
| +<pre class="prettyprint">
|
| +$ python ${PWD}/demo.py
|
| +</pre>
|
| +<p>Navigate to <a class="reference external" href="http://localhost:5103/">http://localhost:5103/</a> to test the demo.</p>
|
| +<p>If you follow along with the demo video, you will discover the sample crashes
|
| +when you change the thread count.</p>
|
| +<p><em>Debugger walk-thru coming soon.</em></p>
|
| +<p>Once you’ve identified the problem. You’ll want to stop the test server.
|
| +Press enter to halt it.</p>
|
| +<p>Open your editor again, navigate to line 485 and change <em>valu</em> to <em>value</em>.</p>
|
| +<p>Then rebuild:</p>
|
| +<pre class="prettyprint">
|
| +$ bash build.sh
|
| +</pre>
|
| +<p>Check the diff and commit our fix:</p>
|
| +<pre class="prettyprint">
|
| +$ git diff
|
| +$ git commit -am "fixed thread ui bug"
|
| +</pre>
|
| +<p>Now look at your commit history:</p>
|
| +<pre class="prettyprint">
|
| +$ git log
|
| +</pre>
|
| +<p>Run the demo again. And everything now works:</p>
|
| +<pre class="prettyprint">
|
| +$ python ${PWD}/demo.py
|
| +</pre>
|
| +</section></section></section>
|
| +
|
| +{{/partials.standard_nacl_article}}
|
|
|