
==============================================================================
Using the Simple DirectMedia Layer with Qtopia/OPIE
==============================================================================

==============================================================================
I.  Setting up the Qtopia development environment.

  This document will not explain how to setup the Qtopia development
  environment. That is outside the scope of the document. You can read
  more on this subject in this excellent howto:

	http://www.zauruszone.com/howtos/linux_compiler_setup_howto.html

==============================================================================
II.  Building the Simple DirectMedia Layer libraries using the arm
     cross-compiler

  This is somewhat tricky since the name of the compiler binaries
  differ from the standard. Also you should disable features not
  needed. The command below works for me. Note that it's all one
  line. You can also set the NM, LD etc environment variables
  separately.

	NM=arm-linux-nm LD=arm-linux-ld CC=arm-linux-gcc CXX=arm-linux-g++ RANLIB=arm-linux-ranlib AR=arm-linux-ar ./configure --enable-video-qtopia --disable-video-dummy --disable-video-fbcon  --disable-video-dga --disable-arts --disable-esd --disable-alsa --disable-cdrom --disable-video-x11 --disable-nasm --prefix=/opt/Qtopia/sharp/ arm-unknown-linux-gnu

  One thing to note is that the above configure will include joystick
  support, even though you can't have joysticks on the Zaurus. The
  reason for this is to avoid link / compile / runtime errors with
  applications that have joystick support.

==============================================================================
III.  Building the Simple DirectMedia Layer test programs:

  After installing, making sure the correct sdl-config is in your
  path, run configure like this:

	NM=arm-linux-nm LD=arm-linux-ld CC=arm-linux-gcc CXX=arm-linux-g++ AR=arm-linux-ar ./configure arm-unknown-linux-gnu

==============================================================================
IV.  Application porting notes

  One thing I have noticed is that applications sometimes don't exit
  correctly. Their icon remains in the taskbar and they tend to
  relaunch themselves automatically. I believe this problem doesn't
  occur if you exit your application using the exit() method. However,
  if you end main() with 'return 0;' or so, this seems to happen.

  Also note that when running in landscape mode - i.e requesting a
  window that is HEIGHT pixels wide and WIDTH pixels high, where WIDTH
  and HEIGHT normally is 240 and 320 - the image is blitted so that
  the hardware buttons are on the left side of the display. This might
  not always be desirable but such is the code today.


==============================================================================
V.  Enjoy! :)

  If you have a project you'd like me to know about, or want to ask questions,
  go ahead and join the SDL developer's mailing list by sending e-mail to:

	sdl-request@libsdl.org

  and put "subscribe" into the subject of the message. Or alternatively you
  can use the web interface:

	http://www.libsdl.org/mailman/listinfo/sdl
  
==============================================================================
VI.  What is supported:

Keyboard (Sharp Zaurus)
Hardware buttons
Stylus input (mouse)
Video. Allows fullscreen both in portrait mode (up to WIDTHxHEIGHT
size window) and in landscape mode (up to HEIGHTxWIDTH). 

All other SDL functionality works like a normal Linux system (threads,
audio etc).

-- 
David Hedbor <david@hedbor.org>
http://david.hedbor.org/ 	http://eongames.com/

