                The FreeType Unix Compilation HOWTO

Contents

Introduction
I.   Building the library
  1. Quick Compilation
  2. Manual compilation
  3. Notes
II.  Building other parts of the package
  1. Test programs
  2. Other contribs
III. Successful Build Reports



Introduction
============

This file  describes the  compilation of the  FreeType package  on a
Unix system.  Using the `configure'  script it should be rather easy
to  build the  library.  However,  detailed instructions  on  how to
compile the library manually are given later in this document.



I. Building the library
=======================


1. Quick Compilation
--------------------

  The easiest  way to  compile the  library on a  Unix system  is by
  using the `configure' script that comes with it.  Simply go to the
  root directory of the FreeType package, then type

    ./configure

  to run  a script  that will probe  your system and  detect various
  configuration issues, which are explained later in this document.

  From there, you can simply type

    make

  to invoke compilation of the  whole package.  You can also use the
  following commands:

    make debug     - Make  a  development  version of  the  library.
                     Only   useful  for   FreeType   developers  and
                     hackers.   The default  build should  come with
                     `-g'  (i.e.,  debug info  in  the object  file)
                     already.

    make clean     - Clean  all  intermediate object  files  created
                     during  compilation.   Keeps  all  library  and
                     executables in place.

    make distclean - Clean  everything, leaving the  directories  as
                     they were  before the compilation.  You'll need
                     to  run  `./configure'  again  to  be  able  to
                     re-build it.

    make install   - Install  the library files  libttf.a, libttf.la
                     or  libttf.so  to   your  system  library  path
                     (`/usr/local/lib' by default).  The path can be
                     set manually with ./configure.

    make uninstall - Undo a `make install'.
                    

2. Trouble-shooting and simple customization
--------------------------------------------

  The make  build seems  to fail on  some Solaris systems.   This is
  mainly  due to  the  fact that  the  test programs  (not the  font
  library itself)  try to use certain libraries  and/or utilities if
  they find  them on your system.   In some cases,  the Sun versions
  are incompatible to the GNU ones.  If you encounter such problems,
  please report them to us so we can try to fix it.

  The configure script and  makefiles that it generates can/make use
  of the following things:

  - gettext      - In order  to compile the  internationalized error
                   message string extension, which isn't part of the
                   core  library.  You  can disable  this and  get a
                   clean compile with

                     ./configure --disable-nls


  - libtool      - Used  to  generate  shared  libraries.   You  can
                   disable it by typing

                     ./configure --disable-shared

                   which will generate  and link the FreeType engine
                   as a static library.

                   By default, static compilation is disabled if the
                   configure  script   detects  that  your  compiler
                   and/or    operating   system    supports   shared
                   libraries.  You can ask for static libraries with

                     ./configure --enable-static

  For more configuration options, type `./configure --help' to see a
  summary of  what is  possible.  The option  to change  the library
  installation   path    for   `make   install'    is,   as   usual,
  `--prefix=<path>'.  Example:

    ./configure --prefix=${HOME}/local/lib --disable-shared

  to install  a static library (libttf.a) in  `~/local/lib' (after a
  `make install')


3. Manual compilation
---------------------

  Here  are explained  the steps  that are  required to  compile the
  FreeType _library_ (and only this one) by hand.

  a. Generate a configuration file named `ft_conf.h'

    This  file  contains a  certain  number  of configuration  macro
    declarations which  must fit your system.   The configure script
    generates it  automatically for you,  but you can also  take the
    template  file `freetype/ft_conf.h.in'  and change  it  by hand,
    then save it as `freetype/ft_conf.h'.

  b. Choose your compilation mode

    Unlike previous versions, FreeType 1.1 and above can be compiled
    in two modes, called `debug mode' and `single object mode'.
     
    Debug mode  is simply  the normal way  of compiling  C programs,
    i.e., each  *.c file is  compiled into an individual  *.o object
    file, and all of them are linked together into an archive (i.e.,
    a *.a library).

    Single  object  mode is  slightly  different:  All  C files  are
    included in  a single source file  during compilation, resulting
    in a  single final object file  for the core  library.  This has
    the  advantage of  letting optimizing  compilers do  more global
    work, as well  as getting rid of all  external symbols which are
    used solely for the purpose of components interfacing.

    In both modes,  you need to include the  following paths to your
    makefile/command line:

    . the location of the `ft_conf.h' file
    . the location of all `tt*.[hc]' files
    . the  location of  system-specific files,  i.e.,  `ttmmap.c' on
      Unix.

    For  example,  if  you  are compiling  from  the  `freetype/lib'
    directory, you can type for debug mode something like

      gcc -c -I.. -I. -Iarch/unix tt*.c arch/unix/ttmmap.c

    to compile all required files.   Then assemble them in a library
    with `ar' (and run `runlib' if necessary).

    In single object  mode, you only need to  compile the file named
    `freetype.c' which is located in `freetype/lib/arch/unix'.  From
    the same directory as before, one would type:

      gcc -c -I.. -I. -Iarch/unix arch/unix/freetype.c

    You    can   also    compile   the    extensions    located   in
    `freetype/lib/extend' separately  from the base  engine.  You'll
    need to include the same paths as before, though.



II. Building other parts of the package
=======================================


1. Test programs
----------------

  All test  programs are located  in `freetype/test'.  Most  of them
  use a  tiny graphics sub-system  which simply display  bitmaps and
  pixmaps in  a windows on a  variety of platforms.   Of course, the
  Unix version uses X11.

  The default `make' builds  all tests programs automatically.  Just
  go the `freetype/test' and launch the programs when you are there.
  Documentation  on the  test  programs  can be  found  in the  file
  `freetype/README'.

  NOTE:

    For now, the  graphical test programs only run  on the following
    platforms: Unix, OS/2, Dos, Amiga, and Windows.

    The library,  being pure  ANSI-C, can be  used on any  system to
    generate bitmaps and pixmaps.


2. Other contributions
----------------------

  You may find  some other contributions to the  FreeType project in
  the `freetype/contrib'  directory.  Each of  these programs should
  have  their own  makefiles and  documentations.  Also  check their
  licenses,  as  they  are  not necessarily  distributed  under  the
  FreeType one.



III. Successful Build Reports
=============================

Nelson  H. F.  Beebe  <beebe@math.utah.edu>  and others  report  the
following successfully builds (with gcc 2.8.1) of freetype-1.1 on 

  DEC Alpha 2100-5/250:          OSF/1 3.2   
  HP 9000/735:                   HP-UX 10.01
  Intel Pentium (200MHz MMX):    Linux 2.0.30
  SGI Challenge L:               IRIX 5.3
  Sun SPARC 20/512:              Solaris 2.6
  Sun SPARC Ultra-2:             SunOS 5.5.1
  IBM RS/6000:                   AIX 4.1

Chances  are good the  the current  release will  build on  the same
machines and platforms.

There are build problems reported on SunOs 4.x which have the form

  ld: /usr/tmp/cca07291.o: assert pure-text failed: 
  reference to [offset] at f754 in /usr/tmp/cca07291.o

This may be a compiler bug in gcc 2.8.1.

You can work around by just building a static library with

  ./configure --disable-shared --enable-static --disable-nls

Maybe `make debug' will help here too (untested).

Other successful builds:

  Sun SPARC Solaris 2.5 with Sun C compiler+linker

For updated build reports, please consult our web site:

   http://www.freetype.org


--- end of unix.txt ---
