freetype/builds/amiga
David Turner 53b3fa1da5 * renaming stream functions to the FT_Subject_Action scheme:
FT_Seek_Stream         => FT_Stream_Seek
          FT_Skip_Stream         => FT_Stream_Skip
          FT_Read_Stream         => FT_Stream_Read
          FT_Read_Stream_At      => FT_Stream_Read_At
          FT_Access_Frame        => FT_Stream_Enter_Frame
          FT_Forget_Frame        => FT_Stream_Exit_Frame
          FT_Extract_Frame       => FT_Stream_Extract_Frame
          FT_Release_Frame       => FT_Stream_Release_Frame
          FT_Get_XXXX            => FT_Stream_Get_XXXX
          FT_Read_XXXX           => FT_Stream_Read_XXXX

          note also that:

          FT_New_Stream( filename, stream ) =>
            FT_Stream_Open( stream, filename )

          (the function doesn't create the FT_Stream structure, it simply
           initializes it for reading)

          FT_New_Memory_Stream( library, FT_Byte*  base, size, stream ) =>
            FT_Stream_Open_Memory( stream, const FT_Byte* base, size )

          FT_Done_Stream => FT_Stream_Close

          note that the name of the stream methods, defined in
          "include/freetype/ftsystem.h" have also been changed without
          problems:

            FT_Stream_IO    => FT_Stream_IOFunc
            FT_Stream_Close => FT_Stream_CloseFunc
2002-02-24 05:26:57 +00:00
..
include/freetype/config * builds/amiga/*: Adaptations to latest changes. 2001-12-22 14:38:40 +00:00
src/base * renaming stream functions to the FT_Subject_Action scheme: 2002-02-24 05:26:57 +00:00
makefile New file. 2001-12-22 20:32:20 +00:00
README * builds/win32/ftdebug.c: New file. 2002-01-19 02:20:45 +00:00
smakefile * builds/amiga/*: Adaptations to latest changes. 2001-12-22 14:38:40 +00:00

The makefile is  for ppc-morphos-gcc-2.95.3-bin.tgz (gcc 2.95.3 hosted
on       68k-Amiga      producing       MorphOS-PPC-binaries      from
http://www.morphos.de).  To  use it, type "make  assign", then "make";
it produces a link library libft2_ppc.a.

The smakefile is a makefile for Amiga SAS/C 6.58 (no longer available,
latest sold version was 6.50, updates  can be found in Aminet).  It is
based on the version found  in the sourcecode of ttf.library 0.83b for
FreeType   1.3.1    from   Richard   Griffith   (ragriffi@sprynet.com,
http://ragriffi.home.sprynet.com).

You will  also need  the latest include  files and amiga.lib  from the
Amiga  web   site  (http://www.amiga.com/3.9/download/NDK3.9.lha)  for
AmigaOS 3.9; the generated code should work under AmigaOS 2.04 and up.

To use it, call "smake  assign" and then "smake" from the builds/amiga
directory.  The results are:

- A link  library "ft2_680x0.lib" (where  x depends on the  setting of
  the  CPU entry  in  the smakefile)  containing  all FreeType2  parts
  except of  the init code,  debugging code, and the  system interface
  code.

- ftsystem.o, an object module  containing the standard version of the
  system interface  code which  uses fopen() fclose()  fread() fseek()
  ftell() malloc() realloc() and free() from lib:sc.lib (not pure).

- ftsystempure.o, an object module  containing the pure version of the
  system  interface  code  which  uses Open()  Close()  Read()  Seek()
  ExamineFH() AsmAllocPooled() AsmFreePooled()  etc.  This version can
  be used in both normal  programs and in Amiga run-time shared system
  librarys (can be  linked with lib:libinit.o, no copying  of DATA and
  BSS  hunks for  each OpenLibrary()  necessary).  Source  code  is in
  src/base/ftsystem.c.

- ftdebug.o, an  object module containing the standard  version of the
  debugging  code   which  uses  vprintf()  and   exit()  (not  pure).
  Debugging can be  turned on in FT:include/freetype/config/ftoption.h
  and with FT_SetTraceLevel().

- ftdebugpure.o, an  object module containing the pure  version of the
  debugging  code  which uses  KVPrintf()  from  lib:debug.lib and  no
  exit().  For  debugging of  Amiga run-time shared  system libraries.
  Source code is in src/base/ftdebug.c.

- NO ftinit.o.   Since linking  with a link  library should  result in
  linking  only  the  needed   object  modules  in  it,  but  standard
  ftsystem.o would  force ALL FreeType2  modules to be linked  to your
  program,  I decided  to use  a different  scheme: You  must #include
  FT:src/base/ftinit.c  in your  sourcecode and  specify  with #define
  statements       which       modules       you      need.        See
  include/freetype/config/ftmodule.h.


To use in your own programs:

- Insert   the   #define  and   #include   statements   from  top   of
  include/freetype/config/ftmodule.h in your source code and uncomment
  the #define statements for the FreeType2 modules you need.

- You  can  use  either  PARAMETERS=REGISTER or  PARAMETERS=STACK  for
  calling  the FreeType2  functions, since  the link  library  and the
  object files are compiled with PARAMETERS=BOTH.

- "smake assign" (assign "FT:" to the FreeType2 main directory).

- Compile your program.

- Link with either ftsystem.o  or ftsystempure.o, if debugging enabled
  with either ftdebug.o or (ftdebugpure.o and lib:debug.lib), and with
  ft2_680x0.lib as link library.


To adapt to other compilers:

- The standard ANSI  C maximum length of 31  significant characters in
  identifiers is not enough for FreeType2.  Check if your compiler has
  a minimum length of 40  significant characters or can be switched to
  it.   "idlen=40"   is  the   option  for  SAS/C.    Setting  #define
  HAVE_LIMIT_ON_IDENTS in an include file may also work (not tested).

- Make  sure that the  include directory  in builds/amiga  is searched
  before the  normal FreeType2 include  directory, so you are  able to
  replace problematic include files with your own version (same may be
  useful for the src directory).

- An example  of how to replace/workaround a  problematic include file
  is  include/config/ftconfig.h;  it  changes  a  #define  that  would
  prevent SAS/C  from generating  XDEF's where it  should do  that and
  then includes the standard FreeType2 include file.