This directory contains files for the RISC OS port of Python.
For more information about RISC OS see http://www.riscos.com/ .

This port is currently being maintained by Dietmar Schwertberger,
dietmar@schwertberger.de .

On http://www.schwertberger.de you may find compiled versions and libraries
as well as RISC OS specific documentation and extensions.


==========================================================================
Compiling:

1. Extract Files from archive directory 'Python-...' to a directory named
   '!Python'.
2. Use a tool like Rename to change filenames from '*/[ch]' into '[ch].*'.
3. Create missing directories with 'amu cdirs'.
4. Build with 'amu'.

I've only tested Acorn/Norcroft C/C++ 5.30 and amu.

Python now uses the 32 bit libraries from Pace as well as the 32 bit
version of OSLib.

You will also need some additional libraries:

  DLK (patched version)
    http://www.schwertberger.de
  OSLib
    http://www.mk-net.demon.co.uk/oslib
  
  zlib (optional)
    ftp://ftp.freesoftware.com/pub/infozip/zlib/
  expat (optional)
    http://sourceforge.net/projects/expat/
    (makefile and config.h available from http://www.schwertberger.de/riscos_expat.zip
