Didj and Explorer libSDL

libSDL is a popular library for games and other applications. It provides APIs for events (buttons, etc), graphics, sound, and more.

Note: A framebuffer driver is required. **not strictly true, will still run audio without a framebuffer**

Create an install script for iconv:

create a folder in your packages dir called libiconv, then copy and paste the following into a text file and save it in the libiconv folder, call it install.sh (you might need to change permissions on the file as well).

Download libiconv-1.13.1.tar.gz google it pretty easy to find

BUILD_FROM_SOURCE=1 PKG_NAME=libiconv SRC=libiconv-1.13.1.tar.gz set -e . $PROJECT_PATH/scripts/functions check_vars check_user set_standard_opts $* pushd $PROJECT_PATH/packages/$PKG_NAME BUILD_DIR=`echo "$SRC" | cut -d '.' -f -3` if [ "$CLEAN" == "1" -o ! -e $BUILD_DIR ]; then rm -rf $BUILD_DIR tar -xzf $SRC fi pushd $BUILD_DIR CFLAGS="-I$PROJECT_PATH/packages/$PKG_NAME/libiconv-1.13.1/ -O3 -fPIC -mcpu=arm926ej-s" LDFLAGS=-L$PROJECT_PATH/packages/$PKG_NAME/libiconv-1.13.1/ ./configure --host=arm-linux --target=arm-linux --prefix=$ROOTFS_PATH/usr --enable-shared make clean make make install popd popd exit 0
 * 1) !/bin/bash
 * 1) make sure all of the environment variables are good
 * 1) exit if the user is root
 * 1) parse args

Build libiconv

Now that you've got an install script you can run it with the following command:

CLEAN=1 ./install.sh

This will download the package for you, unpack it, set the necessary vars then compile and install libiconv. You should only need to do CLEAN=1 for the first time you run it, that's the var that triggers a clean download and install.

 Build the SDL library 

To build SDL, first download and unpack it:

You'll need a toolchain, for example this one

Now try the following, but replace the "/path/to" lines with paths on your system. You'll want to tell the build system where to install libSDL and where to look for kernel headers

If that succeeds, try building and installing:

You should see libSDL.so in usr/lib in your rootfs directory as well as its header files in "usr/include". When building applications against libSDL, tell the compiler to look for headers and the linker to look for libraries there (ie: CFLAGS="-I/path/to/rootfs/usr/include" and LDFLAGS="-L/path/to/rootfs/usr/lib").

 Set up the device 

Copy the .so files and symlinks to your device. Also edit "/etc/profile" on your device and add some environment variables for SDL:

For Didj:

export SDL_NOMOUSE=1 export SDL_FBDEV="/dev/fb0" export SDL_VIDEODRIVER="fbcon" export SDL_AUDIODRIVER="dsp" export SDL_PATH_DSP="/dev/dsp" export SDL_DEBUG="1" export SDL_FBACCEL="0"

For Explorer, the touchscreen works sort of like a mouse (TODO: add tslib support?), so you could try:

export SDL_MOUSEDEV="/dev/input/event3" export SDL_FBDEV="/dev/fb0" export SDL_VIDEODRIVER="fbcon" export SDL_AUDIODRIVER="dsp" export SDL_PATH_DSP="/dev/dsp" export SDL_DEBUG="1" export SDL_FBACCEL="0"

You'll need to source that on your device:

. /etc/profile

or just reboot. You should now be able to run SDL programs or demos as long as your device is set up with a standard Linux framebuffer and console in place of the LeapFrog-supplied graphics drivers.

TODO

* better audio support? * tslib to make touchscreen usable on Explorer?