Source

pygame / symbian / how_to_build.txt

Full commit
== Instructions to build pygame for PyS60. ==

Basic requirements:
- S60 3rd or 5th ed. SDK 
- SVN client
- Python 2.5.x

=== Getting necessary libraries ===

Run 'makeref.py --no-code-docs'
- This regenerates pygame module documentation without documentation in code.

Create symbian/deps directory

Checkout ogg to symbian/deps/ogg
- IMPORTANT: Revision 7524
- SVN: http://svn.xiph.org/trunk/ogg 

Checkout vorbis to symbian/deps/vorbis
- IMPORTANT: Revision 7543
- SVN: http://svn.xiph.org/trunk/vorbis
- Changes for OpenC
-- os.h:
	#if defined(__SYMBIAN32__) && defined(__WINS__)
	#include <sys/types.h> // <-- Add this
	void* _alloca(size_t size);
	#  define alloca _alloca
	#endif

Get SDL for Series60
- Available at: http://koti.mbnet.fi/mertama/sdl.html
- Follow the instructions and copy the pathced SDL S60 folder to symbian/deps/SDL

Get SDL_mixer to symbian/deps/SDL_mixer
- http://www.libsdl.org/projects/SDL_mixer/

Get SDL_ttf to symbian/deps/SDL_ttf
- http://www.libsdl.org/projects/SDL_ttf/

Get Symbian FreeType2 port to symbian/deps/sft2
- SVN: https://sft2.svn.sourceforge.net/svnroot/sft2/trunk/sft2
- Changes for OpenC
-- libsft2.cpp:
  #include <sys/reent.h> // <-- Remove
  ...
  CloseSTDLIB(); in ~CSymbianFreeType() // <-- Remove

Get SDL_image to symbian/deps/SDL_image
- http://www.libsdl.org/projects/SDL_image/


Checkout jpeg library to symbian/deps/jpeg
- https://movino.svn.sourceforge.net/svnroot/movino/libjpeg/trunk

Checkout PNG library to symbian/deps/libpng
- http://pamp.svn.sourceforge.net/svnroot/pamp/libpng/trunk/libpng-1.2.18

- The build scripts use SCons for Symbian. 
-- http://code.google.com/p/scons-for-symbian/
-- Follow the installation instructions


=== Building ===

==== Using the release building script ====
- Go to pygame/symbian directory

The pygame can be built against the official(or any) pys60 version. 
Initialize the release script by giving it information about the python dll to be linked with
and the sis file to be embedded.( UID is read directly from the sis package )
- TODO: Not implemented yet!!
- configure.py pythondll=python222 pys60_sis=Python_1.4.5_3rdEd.sis
- configure.py pythondll=python25  pys60_sis=Python_1.9.0_3rdEd.sis

or

- Use BuildPygameRelease.py script to build the 'pygame_python' with PyS60 Community Edition,
  the depended libraries and the pygame itself. All in one.
- Give the path to the PyS60 CE's 'src' directory as a parameter for the script 
- The CE version is used to do some customizations for the Python installation. 
- The above parameters are handled automatically in that case.
- Of course, you can build the PyS60 CE manually and configure the build script as above.

# Build everything, including PyS60 CE
configure.py pys60_ce_src=\projects\pys60ce\trunk\src

# Use existing python sis. Need to configure the python dll for linker.
configure.py build_python=False pys60_sis=official_python.sisx pythondll=python222.dll

==== Do the build ====

Emulator:
- Run: BuildPygameRelease.py 

Device:
- Run: BuildPygameRelease.py compiler=gcce release=urel
-- NOTE: The you can set your certificate information with configure.py


=== Misc info ===

pygame library
- The pygame is implemented as static library to be statically linked to pygame application.