shithub: freetype+ttf2subf

ref: d5fb3512b0bcc8c1ab13045c7f5ae58331bcdbd4
dir: /builds/amiga/README/

View raw version
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   ([email protected],
http://ragriffi.home.sprynet.com).

You will  also need  the latest include  files and amiga.lib  from the
Amiga Developer  CD V2.1  (or newer, I  hope...) for AmigaOS  3.5, the
generated code should work under AmigaOS 2.04 (V37) 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 adopt 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.