I’m trying to get a NodeJS (not my favorite environment) environment working on the rPi. I want an interactive graphic library that let’s me test on MacOSX and on the RaspberryPi using the PiTFT. Pygame WILL work (more on that later), but I’d like a NodeJS equivalent. Looked into SDL (Simple Direct Media Layer, or something like that). Found a NodeJS binding and figured out how to install it on MacOSX (Mavericks via homebrew and npm). I’m going to write down the magic before I forget.
I may end up abandoning a pure-NodeJS strategy if it is too much trouble and may revert to building a Pygame-based server for the UI, and developing a protocol between that server and a NodeJS program running on the rPi.
Building SDL2 for the Mac
I’m trying to get a NodeJS (not my favorite environment) environment working on the rPi. I want an interactive graphic library that let’s me test on MacOSX and on the RaspberryPi using the PiTFT. Pygame WILL work (more on that later), but I’d like a NodeJS equivalent. Looked into SDL (Simple Direct Media Layer, or something like that). Found a NodeJS binding and figured out how to install it on MacOSX (Mavericks via homebrew and npm). Going to write down the magic before I forget (haven’t test on the pi yet):
- brew install sdl2
- brew install sdl2_image
- brew install sdl2_ttf
- npm install –save node-sdl-runtime
Create a file test.js:
var SDL = require('node-sdl-runtime');
SDL.init(SDL.INIT.EVERYTHING);
var window = new SDL.Window("Hello World Window", SDL.WINDOWPOS.CENTERED, SDL.WINDOWPOS.CENTERED, 640, 480);
setTimeout(function() {
delete window; // Clears reference of the SDL.Window instance
SDL.quit();
}, 2000);
Run it with:
node test.js
Building SDL2 for the RaspberryPi
Useful build instructions from Stu’s Rusty Bucket
Older build instructions from Raspberry PI Site
Setting CPATH
The SDL2 headers are installed in /usr/local/include/SDL2
, which needs to be included during npm install
of SDL-related software. I did the following to help:
export CPATH=/usr/local/include/SDL2
This is a HACK and there must be a nicer way.