Difference between revisions of "Didj and Explorer libSDL"
m |
|||
Line 5: | Line 5: | ||
To build SDL, first download and unpack it: | To build SDL, first download and unpack it: | ||
+ | <code> | ||
wget http://www.libsdl.org/release/SDL-1.2.13.tar.gz | wget http://www.libsdl.org/release/SDL-1.2.13.tar.gz | ||
tar -xf SDL-1.2.13.tar.gz | tar -xf SDL-1.2.13.tar.gz | ||
cd SDL-1.2.13 | cd SDL-1.2.13 | ||
+ | </code> | ||
You'll need a toolchain, for example [[Didj_Build_Environment|this one]] | You'll need a toolchain, for example [[Didj_Build_Environment|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 | + | 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 |
− | + | <code> | |
+ | CFLAGS="-I/path/to/kernel/linux-2.6/include/" | ||
+ | CC=arm-linux-uclibcgnueabi-gcc | ||
+ | CXX=arm-linux-uclibcgnueabi-g++ | ||
+ | ./configure --prefix=/path/to/rootfs//usr/ --build=`uname -m` --host=arm-linux --disable-video-opengl --disable-video-x11 | ||
+ | --disable-esd --disable-video-directfb --enable-video-fbcon --enable-pulseaudio=no | ||
+ | |||
+ | </code> | ||
If that succeeds, try building and installing: | If that succeeds, try building and installing: | ||
+ | <code> | ||
make | make | ||
make install | make install | ||
+ | </code> | ||
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"). | 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"). |
Revision as of 19:36, 22 July 2010
libSDL is a popular library for games and other applications. It provides APIs for events (buttons, etc), graphics, sound, and more.
Build the library
To build SDL, first download and unpack it:
wget http://www.libsdl.org/release/SDL-1.2.13.tar.gz
tar -xf SDL-1.2.13.tar.gz
cd SDL-1.2.13
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
CFLAGS="-I/path/to/kernel/linux-2.6/include/"
CC=arm-linux-uclibcgnueabi-gcc
CXX=arm-linux-uclibcgnueabi-g++
./configure --prefix=/path/to/rootfs//usr/ --build=`uname -m` --host=arm-linux --disable-video-opengl --disable-video-x11
--disable-esd --disable-video-directfb --enable-video-fbcon --enable-pulseaudio=no
If that succeeds, try building and installing:
make
make install
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?