I have been looking into chrome's native client (NaCl).
My goal is to be able to use it as an adaptation layer to run code on the browser, while keeping it as portable as possible.
Looks like that's just what I was looking for.
I did have to make sure the nacl tools were working in my fresh 64 bit VM, since they are 32 bits binaries. I'm running ubuntu, so all I needed to do was install 32 bit libraries by running:
sudo apt-get install ia32-libs
Now came the tricky part.
The naclports are a collection of patches to specific versions of the original projects. For SDL the port is for version 1.2.14.
I followed the documentation on the nacl site on how to port SDL games. I found this page to be a bit lacking in details, but I managed to fill in the blanks and get an example to compile.
The problem was ... the code wrote based on that page was compiling, but didn't actually produce anything visible on the browser apart from a blank NaCl element. No GL context, not nice graphics ;)
No problem I though, I'll just look at the patched SDL source and read the documentation for the new/adapter methods there. No luck here, there was no documentation specific to the port.
Ok, I though, there has to be something, somewhere. Just google it!. I found an example on github from a google developer that I saw in the svn log of the SDL port to naclports. Bingo! Thank you Evgeniy Stepanov (eugenis) for porting SDL, doing an example and uploading it to github!
The example was not compiling, it seemed to be for an old version of the nacl SDK.
Humm, according to the source code this is under a BSD license, and it is on github... here's my first chance to contribute something back to the NaCl comunity.
I forked the example in github and updated it to run on pepper_19 (the latest stable pepper release at the moment).
I changed the Makefile to compile both 64 and 32 bit nexes, based on the Makefiles in the nacl sdk examples. I didn't like how it turned out (the Makefile), but I'm still looking for a new build system to adopt. Make looks more than OK for a simple example.
You can find the fork here. And it works!
Just check out and run:
google-chrome --enable-nacl http://localhost:5103/sdltest.html
(I'm assuming you are running linux)
You should see something like this: