shithub: freetype+ttf2subf

Download patch

ref: 7bda46d094bbefede2926ea8601256fecaf3c36a
parent: 587bc78f86e8e6809311b31ee985a85394976746
author: David Turner <[email protected]>
date: Tue Feb 29 11:56:18 EST 2000

updated the build system to avoid file duplication :

- All "common" ANSI files were moved to "freetype2/config"
- The modules list is in "config" now (instead of
  config/<system>")
- All system-specific configuration Makefiles have been
  renamed. E.g.  "config/win32/Makefile.gcc" is now
  "config/win32/w32-gcc.mk"
- Updated "config/freetype.mk" and "config/modules.mk"

git/fs: mount .git/fs: mount/attach disallowed
--- a/config/ansi/Makefile
+++ /dev/null
@@ -1,199 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for a `normal' ANSI compiler
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-ifndef TOP
-TOP := .
-endif
-
-DELETE   := rm -f
-SEP      := /
-HOSTSEP  := $(SEP)
-BUILD    := $(TOP)/config/ansi
-PLATFORM := ansi
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -l
-
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS :=
-
-# Now include the main sub-makefile. It contains all the rules used
-# to build the library with the previous variables defined
-#
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_std
-distclean_freetype: clean_freetype_library_std
-
-# Librarian to use to build the static library
-#
-FT_LIBRARIAN := $(AR) -r
-
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $@
-	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
-
--- /dev/null
+++ b/config/ansi/ansi.mk
@@ -1,0 +1,134 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for a `normal' ANSI compiler
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := rm -f
+SEP      := /
+HOSTSEP  := $(SEP)
+BUILD    := $(TOP)/config/ansi
+PLATFORM := ansi
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flags
+#
+#   These should concern : debug output, optimization & warnings
+#
+#   Use the ANSIFLAGS variable to define the compiler flags used
+#   to enfore ANSI compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS :=
+
+# Now include the main sub-makefile. It contains all the rules used
+# to build the library with the previous variables defined
+#
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_std
+distclean_freetype: clean_freetype_library_std
+
+# Librarian to use to build the static library
+#
+FT_LIBRARIAN := $(AR) -r
+
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $@
+	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
+
--- a/config/ansi/ftconfig.h
+++ /dev/null
@@ -1,182 +1,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftconfig.h                                                             */
-/*                                                                         */
-/*    ANSI-specific configuration file (specification only).               */
-/*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This header file contains a number of macro definitions that are used */
-  /* by the rest of the engine.  Porters are free to copy this file and    */
-  /* adapt it to suit their own system.                                    */
-  /*                                                                       */
-  /* IMPORTANT NOTE:                                                       */
-  /*                                                                       */
-  /*    Porters, read carefully the comments in `ftsys.h' before trying to */
-  /*    port this file to your system.  It contains many essential         */
-  /*    remarks, and will ease your work greatly.                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#ifndef FTCONFIG_H
-#define FTCONFIG_H
-
-/* Include the header file containing all developer build options */
-#include <ftoption.h>
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled to suit a specific system.  The current   */
-  /* ones are defaults used to compile FreeType in an ANSI C environment   */
-  /* (16bit compilers are also supported).  Copy this file to your own     */
-  /* `freetype/arch/<system>'  directory, and edit it to port the engine.  */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-/* Define to empty if the keyword does not work.  */
-/* #undef const */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* We use <limits.h> values to know the sizes of the types.  */
-#include <limits.h>
-
-/* The number of bytes in an `int' type.  */
-#if   UINT_MAX == 0xFFFFFFFF
-#define SIZEOF_INT  4
-#elif UINT_MAX == 0xFFFF
-#define SIZEOF_INT  2
-#elif UINT_MAX > 0xFFFFFFFF && UINT_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_INT  8
-#else
-#error "Unsupported number of bytes in `int' type!"
-#endif
-
-/* The number of bytes in a `long' type.  */
-#if   ULONG_MAX == 0xFFFFFFFF
-#define SIZEOF_LONG  4
-#elif ULONG_MAX > 0xFFFFFFFF && ULONG_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_LONG  8
-#else
-#error "Unsupported number of bytes in `long' type!"
-#endif
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 0
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 0
-
-
-/* Preferred alignment of data */
-#define FT_ALIGNMENT  8
-
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     AUTOMATIC CONFIGURATION MACROS                    */
-  /*                                                                       */
-  /*  These macros are computed from the ones defined above.  Don't touch  */
-  /*  their definition, unless you know precisely what you're doing.  No   */
-  /*  porter should need to mess with them.                                */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* IntN types                                                            */
-  /*                                                                       */
-  /*   Used to guarantee the size of some specific integers.               */
-  /*                                                                       */
-  typedef signed short    FT_Int16;
-  typedef unsigned short  FT_Word16;
-
-#if SIZEOF_INT == 4
-
-  typedef signed int      FT_Int32;
-  typedef unsigned int    FT_Word32;
-
-#elif SIZEOF_LONG == 4
-
-  typedef signed long     FT_Int32;
-  typedef unsigned long   FT_Word32;
-
-#else
-#error "no 32bit type found - please check your configuration files"
-#endif
-
-#if SIZEOF_LONG == 8
-
-  /* LONG64 must be defined when a 64-bit type is available */
-#define LONG64
-#define INT64   long
-
-#else
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI 'long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro in `ftconfig.h'.  Note  */
-  /* that this will produce many -ansi warnings during library             */
-  /* compilation.                                                          */
-  /*                                                                       */
-#ifdef FTCALC_USE_LONG_LONG
-
-#define LONG64
-#define INT64   long long
-
-#endif /* FTCALC_USE_LONG_LONG */
-#endif
-
-
-#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-#define  LOCAL_DEF   static
-#define  LOCAL_FUNC  static
-#else
-#define  LOCAL_DEF   extern
-#define  LOCAL_FUNC  /* nothing */
-#endif
-
-#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
-#define  BASE_DEF    LOCAL_DEF
-#define  BASE_FUNC   LOCAL_FUNC
-#else
-#define  BASE_DEF    extern
-#define  BASE_FUNC   /* nothing */
-#endif
-
-#ifndef  EXPORT_DEF
-#define  EXPORT_DEF   extern
-#endif
-
-#ifndef  EXPORT_FUNC
-#define  EXPORT_FUNC  /* nothing */
-#endif
-
-#endif /* FTCONFIG_H */
-
-
-/* END */
--- a/config/ansi/ftmodule.h
+++ /dev/null
@@ -1,4 +1,0 @@
-FT_DRIVER(sfnt_driver_interface)
-FT_DRIVER(tt_driver_interface)
-FT_DRIVER(t1_driver_interface)
-FT_DRIVER(psnames_driver_interface)
--- a/config/ansi/ftoption.h
+++ /dev/null
@@ -1,204 +1,0 @@
-#ifndef FTOPTION_H
-#define FTOPTION_H
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled by developers to enable or disable        */
-  /* certain aspects of FreeType.  This file contains macros that apply to */
-  /* all of FreeType.  Driver-specific configurations are placed in each   */
-  /* driver directory (e.g. `freetype/drivers/ttlib/ttconfig.h').          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Alternate Glyph Image Format support                                  */
-  /*                                                                       */
-  /*   By default, the glyph images returned by the FreeType glyph loader  */
-  /*   can either be a pixmap or a vectorial outline defined through       */
-  /*   bezier control points. When defining the following configuration    */
-  /*   macro, some font drivers will be able to register alternate         */
-  /*   glyph image formats.                                                */
-  /*                                                                       */
-  /*   Unset this macro if you're sure that you'll never use a font driver */
-  /*   with an alternate glyph format, this will reduce the size of the    */
-  /*   base layer code.                                                    */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Glyph Postscript Names handling                                       */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. This module is in charge of converting a glyph name string into */
-  /*   a Unicode value, or return a Macintosh standard glyph name for the  */
-  /*   use with the TrueType "post" table.                                 */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the "psnames" compiled in    */
-  /*   your build of FreeType. This has the following effects :            */
-  /*                                                                       */
-  /*   - the TrueType driver will provide its own set of glyph names,      */
-  /*     if you build it to support postscript names in the TrueType       */
-  /*     "post" table.                                                     */
-  /*                                                                       */
-  /*   - the Type 1 driver will not be able to synthetize a                */
-  /*     Unicode charmap out of the glyphs found in the fonts.             */
-  /*                                                                       */
-  /*   You would normally undefine this configuration macro when           */
-  /*   building a version of FreeType that doesn't contain a Type 1        */
-  /*   or CFF driver.                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Postscript Names to Unicode Values support                            */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. Among other things, the module is used to convert a glyph       */
-  /*   name into a unicode value. This is especially useful in order to    */
-  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */
-  /*   through a big table named the "Adobe Glyph List".                   */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the Adobe Glyph List         */
-  /*   compiled in your "psnames" module. The Type 1 driver will not       */
-  /*   be able to synthetize a Unicode charmap out of the glyphs found     */
-  /*   in the fonts..                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI `long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro here.  Note however     */
-  /* that we did not experience any improvement in speed with gcc, and     */
-  /* that the final code seems bigger when linked.                         */
-  /*                                                                       */
-#undef FTCALC_USE_LONG_LONG
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* When compiling FreeType as a DLL, some systems/compilers need a       */
-  /* special keyword in front of each function definition instead of       */
-  /* `extern'.                                                             */
-  /*                                                                       */
-  /* The macros EXPORT_DEF and EXPORT_FUNC are thus used to define         */
-  /* exported library function interfaces and exported library functions   */
-  /* implementations respectively.                                         */
-  /*                                                                       */
-  /* If not defined here, they automatically default to `extern' and void  */
-  /* later in this header file.                                            */
-  /*                                                                       */
-#undef EXPORT_DEF
-#undef EXPORT_FUNC
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Debug level                                                           */
-  /*                                                                       */
-  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
-  /*   errors are reported through the `ftdebug' component.  In trace      */
-  /*   mode, additional messages are sent to the standard output during    */
-  /*   execution.                                                          */
-  /*                                                                       */
-  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
-  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
-  /*                                                                       */
-  /*   Don't define any of these macros to compile in `release' mode.      */
-  /*                                                                       */
-#undef  FT_DEBUG_LEVEL_ERROR
-#undef  FT_DEBUG_LEVEL_TRACE
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Anti-aliasing support                                                 */
-  /*                                                                       */
-  /*   Undefine this macro only if you want to disable the anti-aliasing   */
-  /*   support in FreeType.  This will save you about 5 Kb of code.  It    */
-  /*   may be important for some embedded systems.                         */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ANTI_ALIAS
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Endianess performance improvement                                     */
-  /*                                                                       */
-  /*   FreeType is completely endian-independent, and can thus be compiled */
-  /*   directly on _any_ machine.  However, some components of the library */
-  /*   provide improved routines for the cases where endianess is known.   */
-  /*                                                                       */
-  /*   It usually results in speed-ups and reduced code size.  Note that   */
-  /*   you should not define both of these macros.                         */
-  /*                                                                       */
-  /*                                                                       */
-  /*   NOTE: For now, only the scan-line converter (base/ftraster.c) uses  */
-  /*         these macros to speed-up some anti-alias rendering routines.  */
-  /*                                                                       */
-#undef  FT_CONFIG_OPTION_LITTLE_ENDIAN
-#undef  FT_CONFIG_OPTION_BIG_ENDIAN
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro whenever you want to build a version  */
-  /* of FreeType that does not include a default `system' component.       */
-  /*                                                                       */
-  /* Note that this will prevent the compilation of `ftinit', hence the    */
-  /* function FT_Init_FreeType                                             */
-  /*                                                                       */
-#undef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    The size in bytes of the render pool used by the scan-line         */
-  /*    converter to do all of its work.                                   */
-  /*                                                                       */
-  /*    This must be greater than 4 Kb                                     */
-  /*                                                                       */
-#define FT_RENDER_POOL_SIZE   32768
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_DRIVERS                                                     */
-  /*                                                                       */
-  /*    The maximum number of font drivers that can be registered in a     */
-  /*    single FreeType library object.  8 seems to be a good choice due   */
-  /*    to the relative low actual number of drivers ;-)                   */
-  /*                                                                       */
-#define FT_MAX_DRIVERS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_EXTENSIONS                                                  */
-  /*                                                                       */
-  /*    The maximum number of extensions that can be registered in a       */
-  /*    single font driver. 8 seems to be a good choice for now..          */
-  /*                                                                       */
-#define FT_MAX_EXTENSIONS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_GLYPH_FORMATS                                               */
-  /*                                                                       */
-  /*    The maximum number of glyph image formats that might be registered */
-  /*    in a given library instance. 8 seems to be a good choice due to    */
-  /*    the relatively low number of current formats ;-)                   */
-  /*                                                                       */
-
-#define FT_MAX_GLYPH_FORMATS  8
-
-
-
-#endif /* FTOPTION_H */
--- a/config/ansi/ftsys.c
+++ /dev/null
@@ -1,971 +1,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsys.c                                                                */
-/*                                                                         */
-/*    ANSI-specific system operations (body).                              */
-/*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This implementation of the `ftsys' component uses the standard ANSI C */
-  /* library.                                                              */
-  /*                                                                       */
-  /* IMPORTANT NOTE:                                                       */
-  /*                                                                       */
-  /*    Porters, read carefully the comments in ftsys.h before trying to   */
-  /*    port this file to your system.  It contains many essential         */
-  /*    remarks, and will ease your work greatly.                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#include "ftsys.h"
-#include "ftstream.h"
-#include "ftdebug.h"
-
-
-#ifdef FT_CONFIG_OPTION_DEBUG_MEMORY
-#include "memdebug.c"
-#endif
-
-
-  /*************************************************************************/
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the PTRACE() and PERROR() macros, used to print/log      */
-  /* messages during execution.                                            */
-  /*                                                                       */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_io
-
-
-#undef  CUR_SYSTEM  /* just in case */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* To ease porting, we use the macro SYS_STREAM to name the              */
-  /* system-specific stream type.  For example, it is a `FILE*' with the   */
-  /* ANSI libc, it will be a file descriptor, i.e. an integer, when using  */
-  /* the Unix system API, etc.                                             */
-  /*                                                                       */
-#define SYS_STREAM  FILE*
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This implementation of ftsys uses the ANSI C library.  Memory         */
-  /* management is performed through malloc/free, i/o access through       */
-  /* fopen/fread/fseek, and no synchronisation primitive is implemented    */
-  /* (they contain dummy code)                                             */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                      I/O ACCESS AND MANAGEMENT                        */
-  /*                                                                       */
-  /* We only define the `ANSI' resource class in this class.  It is        */
-  /* disk-based and provides a MRU cache in order to only keep the file    */
-  /* descriptors of the 10 most recently used resource files.              */
-  /*                                                                       */
-  /* It simply contains two lists.  One contains the `cached' resources    */
-  /* with a valid FILE* pointer, the second contains all other `flushed'   */
-  /* resource objects.                                                     */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_AnsiFileRec                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The FT_AnsiFile class derives from FT_ResourceRec.                 */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root      :: The root resource class fields.                       */
-  /*                                                                       */
-  /*    pathname  :: This is a copy of the ANSI file pathname used to open */
-  /*                 streams for the resource.  A different implementation */
-  /*                 is free to use Unicode chars, or file i-node numbers, */
-  /*                 etc.                                                  */
-  /*                                                                       */
-  /*    file_size :: The size in bytes of the resource.  This field should */
-  /*                 be set to -1 until the resource is first opened.      */
-  /*                                                                       */
-  typedef struct  FT_AnsiFileRec_
-  {
-    FT_ResourceRec  root;
-    char*           pathname;   /* the font file's pathname           */
-    FT_Long         file_size;  /* file size in bytes                 */
-
-  } FT_AnsiFileRec, *FT_AnsiFile;
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* We use the macro STREAM_Name() as a convenience to return a given     */
-  /* ANSI resource's pathname.  Its `stream' argument is a FT_Resource     */
-  /* which is typecasted to the FT_AnsiFile class.                         */
-  /*                                                                       */
-#define STREAM_Name( stream )  ((FT_AnsiFile)stream->resource)->pathname
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* We use the macro STREAM_File() as a convenience to extract the        */
-  /* system-specific stream handle from a given FreeType stream object.    */
-  /*                                                                       */
-#define STREAM_File( stream )  ((FILE*)stream->stream_id.pointer)
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    AnsiFile_Open                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to open a system-stream for a given          */
-  /*    resource.                                                          */
-  /*                                                                       */
-  /*    Note that it must update the target FreeType stream object with    */
-  /*    the system-stream handle and the resource's size.                  */
-  /*                                                                       */
-  /*    Also, the `stream->base' field must be set to NULL for disk-based  */
-  /*    resources, and to the address in memory of the resource's first    */
-  /*    byte for memory-based ones.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    resource :: The source resource.                                   */
-  /*    stream   :: The target stream object.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function simply calls fopen() in the resource's file          */
-  /*    pathname.                                                          */
-  /*                                                                       */
-  /*    The stream object IS NOT CREATED by this function, but by its      */
-  /*    caller.                                                            */
-  /*                                                                       */
-  static
-  FT_Error  AnsiFile_Open( FT_AnsiFile  resource,
-                           FT_Stream    stream )
-  {
-    FILE*  file;
-
-    /* open the file */
-    file = fopen( resource->pathname, "rb" );
-    if ( !file )
-    {
-      PERROR(( "AnsiFile_Open: Could not open file `%s'\n",
-               resource->pathname ));
-      return FT_Err_Cannot_Open_Stream;
-    }
-
-    /* compute file size if necessary */
-    if ( resource->file_size < 0 )
-    {
-      fseek( file, 0, SEEK_END );
-      resource->file_size = ftell( file );
-      fseek( file, 0, SEEK_SET );
-    }
-
-    stream->resource          = (FT_Resource)resource;
-    stream->stream_id.pointer = file;
-    stream->size              = resource->file_size;
-
-    /* it's a disk-based resource, we don't need to use the `base' and   */
-    /* `cursor' fields of the stream objects                             */
-    stream->base              = NULL;
-    stream->cursor            = NULL;
-
-    PTRACE1(( "AnsiFile_Open: Opened `%s' (%d bytes) successfully\n",
-              resource->pathname, resource->file_size ));
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    AnsiFile_Close                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Closes a given stream.                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: The target stream object.                                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function simply calls fclose() on the stream's ANSI FILE      */
-  /*    object.                                                            */
-  /*                                                                       */
-  static
-  FT_Error  AnsiFile_Close( FT_Stream  stream )
-  {
-    PTRACE1(( "AnsiFile_Close: Closing file `%s'\n", STREAM_Name( stream ) ));
-
-    fclose( STREAM_File( stream ) );
-
-    stream->resource          = NULL;
-    stream->stream_id.pointer = NULL;
-    stream->size              = 0;
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    AnsiFile_Seek                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Seeks a stream to a given position.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream   :: The target stream object.                              */
-  /*    position :: The offset in bytes from the start of the              */
-  /*                resource/stream.                                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function simply calls fseek() on the stream.                  */
-  /*                                                                       */
-  /*    The `seek' method is never called by the stream manager in case    */
-  /*    of a memory-based resource (i.e., when `stream->base' isn't NULL). */
-  /*                                                                       */
-  static
-  FT_Error  AnsiFile_Seek( FT_Stream  stream,
-                           FT_Long    position )
-  {
-    if ( fseek( STREAM_File( stream ), position, SEEK_SET ) )
-    {
-      PERROR(( "AnsiFile_Seek: FAILED!  Pos. %ld of `%s'\n",
-               position, STREAM_Name( stream ) ));
-
-      return FT_Err_Invalid_Stream_Seek;
-    }
-
-    PTRACE2(( "AnsiFile_Seek: Pos. %ld of `%s'\n",
-              position, STREAM_Name( stream ) ));
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    AnsiFile_Skip                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Skips a given number of bytes in an ANSI stream.  Useful to skip   */
-  /*    pad bytes, for example.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: The target stream object.                                */
-  /*    count  :: The number of bytes to skip in the stream.               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function simply calls fseek() on the stream.                  */
-  /*                                                                       */
-  /*    The `skip' method is never called by the stream manager in case    */
-  /*    of a memory-based resource (i.e., when `stream->base' isn't NULL). */
-  /*                                                                       */
-  static
-  FT_Error  AnsiFile_Skip( FT_Stream  stream,
-                           FT_Long    count )
-  {
-    if ( fseek( STREAM_File( stream ), count, SEEK_CUR ) )
-    {
-      PERROR(( "AnsiFile_Skip: FAILED!  %ld bytes in `%s'\n",
-               count, STREAM_Name( stream ) ));
-
-      return FT_Err_Invalid_Stream_Seek;
-    }
-
-    PTRACE2(( "AnsiFile_Skip: %ld bytes in `%s'\n",
-              count, STREAM_Name( stream ) ));
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    AnsiFile_Pos                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Returns the current offset within an ANSI stream's resource.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream   :: The target stream object.                              */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    position :: The current offset.  -1 in case of error.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function simply calls ftell() on the stream.                  */
-  /*                                                                       */
-  /*    The `pos' method is never called by the stream manager in case     */
-  /*    of a memory-based resource (i.e., when `stream->base' isn't NULL). */
-  /*                                                                       */
-  static
-  FT_Error  AnsiFile_Pos( FT_Stream  stream,
-                          FT_Long*   position )
-  {
-    *position = ftell( STREAM_File( stream ) );
-    if ( *position == -1 )
-    {
-      PTRACE2(( "AnsiFile_Pos: FAILED!  In `%s'\n", STREAM_Name( stream ) ));
-      return FT_Err_Invalid_Stream_Seek;
-    }
-
-    PTRACE2(( "AnsiFile_Pos: For `%s'\n", STREAM_Name( stream ) ));
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    AnsiFile_Read                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reads a given number of bytes from an ANSI stream into memory.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     :: The target stream object.                            */
-  /*    buffer     :: The target read buffer where data is copied.         */
-  /*    size       :: The number of bytes to read from the stream.         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    read_bytes :: The number of bytes effectively read from the        */
-  /*                  stream.  Used in case of error                       */
-  /*                  (i.e. FT_Err_Invalid_Stream_Read) by some parts of   */
-  /*                  the library.                                         */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*   This function simply calls fread() on the stream.                   */
-  /*                                                                       */
-  /*   It MUST return the error FT_Err_Invalid_Stream_Read in case of      */
-  /*   an over-read (i.e., reading more bytes from the stream that what    */
-  /*   is left), as the stream component checks for this specific value.   */
-  /*                                                                       */
-  /*   The `read' method is never called by the stream manager in case     */
-  /*   of a memory-based resource (i.e., when `stream->base' isn't NULL).  */
-  /*                                                                       */
-  static
-  FT_Error  AnsiFile_Read( FT_Stream  stream,
-                           FT_Char*   buffer,
-                           FT_Long    size,
-                           FT_Long*   read_bytes )
-  {
-    *read_bytes = fread( buffer, 1, size, STREAM_File( stream ) );
-    if ( *read_bytes != size )
-    {
-      /* Note : we can have an over-read here when called by the */
-      /*        function FT_Access_Compressed_Frame. This means  */
-      /*        that the following message should be a trace,    */
-      /*        rather than an error for disk-based resources..  */
-      /*                                                         */
-      /*        the function must set the value of 'read_bytes'  */
-      /*        even if it returns an error code..               */
-      PTRACE2(( "AnsiFile_Read: FAILED!  Read %ld bytes from '%s'\n",
-               size, STREAM_Name( stream ) ));
-
-      return FT_Err_Invalid_Stream_Read;
-    }
-
-    PTRACE2(( "AnsiFile_Read: Read %ld bytes to buffer 0x%08lx from `%s'\n",
-              size, (long)buffer, STREAM_Name( stream ) ));
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* The following table is the `virtual method table' for the `ANSI       */
-  /* resource class', which methods are defined above.  Its address is set */
-  /* in the `interface' field of all resource objects created by the       */
-  /* function FT_Create_AnsiFile() (see below).                            */
-  /*                                                                       */
-  static
-  FTRes_InterfaceRec  FT_AnsiFile_Interface =
-  {
-    (FTRes_Open_Func) AnsiFile_Open,
-    (FTRes_Close_Func)AnsiFile_Close,
-    (FTRes_Seek_Func) AnsiFile_Seek,
-    (FTRes_Skip_Func) AnsiFile_Skip,
-    (FTRes_Pos_Func)  AnsiFile_Pos,
-    (FTRes_Read_Func) AnsiFile_Read,
-  };
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Create_Resource                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Creates a new resource object.  This function is called by the     */
-  /*    FT_New_Resource() function of the base layer.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library   :: The input library object.                             */
-  /*    pathname  :: The file's pathname as an ASCII string.               */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aresource :: A handle to new resource object.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This functions does not open a stream.  It simply copies the       */
-  /*    pathname within a fresh new resource object.                       */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_Create_Resource( FT_Library    library,
-                                const char*   pathname,
-                                FT_Resource*  aresource )
-  {
-    FT_Int       len;
-    FT_AnsiFile  resource;
-    FT_Error     error;
-    FT_System    system;
-
-
-    if ( !library )
-      return FT_Err_Invalid_Library_Handle;
-
-    system = library->system;
-
-    if ( !pathname )
-      goto Fail_Null;
-
-    len = strlen( pathname );
-    if ( len == 0 )
-      goto Fail_Null;
-
-    resource = NULL;
-
-    if ( ALLOC( resource, sizeof ( *resource ) ) ||
-         ALLOC( resource->pathname, len + 1 )    )
-      goto Fail_Memory;
-
-    resource->root.library   = library;
-    resource->root.interface = &FT_AnsiFile_Interface;
-    resource->root.flags     = FT_RESOURCE_TYPE_DISK_BASED;
-    resource->file_size      = -1;
-    strcpy( resource->pathname, pathname );
-
-    PTRACE1(( "Create_AnsiFile: Ansi resource created for `%s'\n",
-              pathname ));
-
-    *aresource = (FT_Resource)resource;
-    return FT_Err_Ok;
-
-  Fail_Null:
-    PERROR(( "Create_AnsiFile: Null pathname!\n" ));
-    return FT_Err_Invalid_Argument;
-
-  Fail_Memory:
-    if ( resource )
-      FREE( resource->pathname );
-    FREE( resource );
-    PERROR(( "Create_AnsiFile: Not enough memory to create resource!\n" ));
-    return error;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Destroy_Resource                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discards a given resource object explicitly.                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    resource :: The ANSI resource object.                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function does not check whether runs or streams are opened    */
-  /*    for the resource (for now, we assume developer intelligence.       */
-  /*    We'll most probably lower our standard later to ease debugging :-) */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_Destroy_Resource( FT_Resource  resource )
-  {
-    FT_System    system = resource->library->system;
-    FT_AnsiFile  ansi   = (FT_AnsiFile)resource;
-
-    if ( !ansi || ansi->root.interface != &FT_AnsiFile_Interface )
-    {
-      PERROR((
-        "Destroy_AnsiFile: Trying to destroy an invalid resource!\n" ));
-      return FT_Err_Invalid_Resource_Handle;
-    }
-
-    PTRACE1(( "Destroy_AnsiFile: Destroying resource for `%s'\n",
-              ansi->pathname ));
-
-    FREE( ansi->pathname );
-    FREE( ansi );
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                          MEMORY MANAGEMENT                            */
-  /*                                                                       */
-  /*                                                                       */
-  /*  This part copies the old FreeType 1.0 and 1.1 memory management      */
-  /*  scheme that was defined in the file `ttmemory.h'.  One can see that  */
-  /*                                                                       */
-  /*  - a set of macros is defined for the memory operations used by the   */
-  /*    engine (MEM_Copy(), MEM_Move(), MEM_Set()).  This comes from the   */
-  /*    fact that many compilers are able to inline these operations       */
-  /*    directly within the compiled code, rather than generating a call   */
-  /*    to the C library.  However, this obliges us to include the         */
-  /*    `<string.h>' header file.                                          */
-  /*                                                                       */
-  /*    If you provide your own memory operations, you can get rid of the  */
-  /*    `#include <string.h>' below.                                       */
-  /*                                                                       */
-  /*                                                                       */
-  /*  - the FT_Alloc() function has several essential properties that MUST */
-  /*    be retained by each port:                                          */
-  /*                                                                       */
-  /*    - It returns an error code, NOT the allocated block's base         */
-  /*      address.                                                         */
-  /*                                                                       */
-  /*    - It takes the address of a target pointer, where the block's base */
-  /*      address will be set.  If the size is zero, its value will be     */
-  /*      NULL, and the function returns successfully.                     */
-  /*                                                                       */
-  /*    - In case of error, the pointer's value is set to NULL and an      */
-  /*      error code is returned.                                          */
-  /*                                                                       */
-  /*    - The new allocated block MUST be zero-filled.  This is a strong   */
-  /*      convention the rest of the engine relies on.                     */
-  /*                                                                       */
-  /*                                                                       */
-  /*  - the FT_Free() function has also its essentials:                    */
-  /*                                                                       */
-  /*    - It takes the address of a pointer which value is the block's     */
-  /*      base address.  This is UNLIKE a standard `free()' which takes    */
-  /*      the block's base directly.                                       */
-  /*                                                                       */
-  /*    - It accepts successfully the address of a pointer which value is  */
-  /*      NULL, in which case it simply returns.                           */
-  /*                                                                       */
-  /*    - The pointer is always set to NULL by the function.               */
-  /*                                                                       */
-  /*                                                                       */
-  /*  - The MEM_Alloc(), ALLOC(), and ALLOC_ARRAY() macros are used by the */
-  /*    library and should NOT be modified by porters!                     */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the PTRACE() and PERROR() macros, used to print/log      */
-  /* messages during execution.                                            */
-  /*                                                                       */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_memory
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Alloc                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Allocates a new block of memory.  The returned area is always      */
-  /*    zero-filled, this is a strong convention in many FreeType parts.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object' where allocation     */
-  /*              occurs.                                                  */
-  /*                                                                       */
-  /*    size   :: The size in bytes of the block to allocate.              */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    P      :: A pointer to the fresh new block.  It should be set to   */
-  /*              NULL if `size' is 0, or in case of error.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  BASE_FUNC
-  FT_Error  FT_Alloc( FT_System  system,
-                      FT_Long    size,
-                      void**     P )
-  {
-    if ( !P )
-    {
-      PERROR(( "FT_Alloc: Invalid pointer address!\n" ));
-      return FT_Err_Invalid_Argument;
-    }
-
-    if ( size > 0 )
-    {
-      *P = malloc( size );
-      if ( !*P )
-      {
-        PERROR(( "FT_Alloc: Out of memory (%ld bytes requested)!\n",
-                 size ));
-
-        return FT_Err_Out_Of_Memory;
-      }
-
-#ifdef FT_CONFIG_OPTION_DEBUG_MEMORY
-      DM_Record( (char*)*P, size );
-#endif
-
-      system->total_alloc += size;
-
-      /* ALWAYS ZERO-FILL THE BLOCK! */
-      MEM_Set( *P, 0, size );
-    }
-    else
-      *P = NULL;
-
-    PTRACE2(( "FT_Alloc: Size = %ld, pointer = 0x%08lx, block = 0x%08lx\n",
-              size, (long)P, (long)*P ));
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Realloc                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reallocates a block of memory pointed to by `*P' to `Size' bytes   */
-  /*    from the heap, possibly changing `*P'.                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object' where allocation     */
-  /*              occurs.                                                  */
-  /*                                                                       */
-  /*    size   :: The size in bytes of the block to allocate.              */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    P      :: A pointer to the fresh new block.  It should be set to   */
-  /*              NULL if `size' is 0, or in case of error.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  BASE_FUNC
-  FT_Error  FT_Realloc( FT_System  system,
-                        FT_Long    size,
-                        void*     *P )
-  {
-    void*  Q;
-
-
-    if ( !P )
-    {
-      PERROR(( "FT_Realloc: Invalid pointer address!\n" ));
-      return FT_Err_Invalid_Argument;
-    }
-
-    /* if the original pointer is NULL, call FT_Alloc() */
-    if ( !*P )
-      return FT_Alloc( system, size, P );
-
-    /* if the new block if zero-sized, clear the current one */
-    if ( size <= 0 )
-      return FT_Free( system, P );
-
-#ifdef FT_CONFIG_OPTION_DEBUG_MEMORY
-    DM_Forget( (char*)*P );
-#endif
-
-    Q = (void*)realloc( *P, size );
-    if ( !Q )
-    {
-      PERROR(( "FT_Realloc: Reallocation failed!\n" ));
-      return FT_Err_Out_Of_Memory;
-    }
-
-#ifdef FT_CONFIG_OPTION_DEBUG_MEMORY
-    DM_Record( (char*)Q, size );
-#endif
-
-    *P = Q;
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Free                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Releases a given block of memory allocated through FT_Alloc().     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object' where allocation     */
-  /*              occured.                                                 */
-  /*                                                                       */
-  /*    P      :: This is the _address_ of a _pointer_ which points to the */
-  /*              allocated block.  It is always set to NULL on exit.      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If P or *P are NULL, this function should return successfully.     */
-  /*    This is a strong convention within all of FreeType and its         */
-  /*    drivers.                                                           */
-  /*                                                                       */
-  BASE_FUNC
-  FT_Error  FT_Free( FT_System  system,
-                     void*     *P )
-  {
-    UNUSED( system );
-
-    PTRACE2(( "FT_Free: Freeing pointer 0x%08lx (block 0x%08lx)\n",
-              (long)P, (P ? (long)*P : -1) ));
-
-    if ( !P || !*P )
-      return FT_Err_Ok;
-
-    free( *P );
-
-#ifdef FT_CONFIG_OPTION_DEBUG_MEMORY
-    DM_Forget( (char*)*P );
-#endif
-
-    *P = NULL;
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       SYNCHRONIZATION MANAGEMENT                      */
-  /*                                                                       */
-  /*                                                                       */
-  /*   This section deals with mutexes.  The library can be compiled to    */
-  /*   two distinct thread support levels (namely single threaded and      */
-  /*   re-entrant modes).                                                  */
-  /*                                                                       */
-  /*   It protects its variables through the MUTEX_Lock() and              */
-  /*   MUTEX_Release() macros which are void in single threaded mode.      */
-  /*                                                                       */
-  /*   It defines a typeless mutex reference type, `FT_Mutex', that you're */
-  /*   free to redefine for your system's needs.                           */
-  /*                                                                       */
-  /*   The default implementation of ftsys.c contains only dummy functions */
-  /*   which always return successfully.  You NEED to specialize them in   */
-  /*   order to port ftsys.c to any multi-threaded environment.            */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the PTRACE() and PERROR() macros, used to print/log      */
-  /* messages during execution.                                            */
-  /*                                                                       */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_sync
-
-
-#ifdef FT_CONFIG_THREADS
-
-  BASE_FUNC
-  FT_Error  FT_Mutex_Create( FT_System  system,
-                             TMutex*    mutex )
-  {
-    UNUSED( system );
-
-    mutex = (void*)-1;
-    system->num_mutexes++;
-
-    /* Insert your own mutex creation code here */
-
-    return FT_Err_Ok;
-  }
-
-
-  BASE_FUNC
-  void  FT_Mutex_Delete( FT_System  system,
-                         TMutex*    mutex )
-  {
-    UNUSED( system );
-
-    mutex = (void*)0;
-    system->num_mutexes--;
-
-    /* Insert your own mutex destruction code here */
-  }
-
-
-  BASE_FUNC
-  void  FT_Mutex_Lock( FT_System  system,
-                       TMutex*    mutex )
-  {
-    /* NOTE: It is legal to call this function with a NULL argument */
-    /*       in which case an immediate return is appropriate.      */
-
-    UNUSED( system );
-
-    if ( !mutex )
-      return;
-
-    /* Insert your own mutex locking code here */
-  }
-
-
-  BASE_FUNC
-  void  FT_Mutex_Release( FT_System  system,
-                          TMutex*    mutex )
-  {
-    /* NOTE: It is legal to call this function with a NULL argument */
-    /*       in which case an immediate return is appropriate       */
-
-    UNUSED( system );
-
-    if ( !mutex )
-      return;
-
-    /* Insert your own mutex release code here */
-  }
-
-#endif /* FT_CONFIG_THREADS */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_System                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to create and initialize new system objects. */
-  /*    These are mainly used to let client applications and font servers  */
-  /*    specify their own memory allocators and synchronization            */
-  /*    procedures.                                                        */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    system :: A handle to a given `system object'.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_New_System( FT_System*  system )
-  {
-    *system = (FT_System)malloc( sizeof ( **system ) );
-
-    if ( !*system )
-      return FT_Err_Out_Of_Memory;
-
-    /* the ANSI function `free()' is unable to return the number   */
-    /* of released bytes.  Hence, the `current_alloc' field of the */
-    /* system object cannot be used.                               */
-
-    (*system)->system_flags = FT_SYSTEM_FLAG_TOTAL_ALLOC |
-                              FT_SYSTEM_FLAG_MUTEXES;
-    (*system)->total_alloc = 0;
-    (*system)->num_mutexes = 0;
-
-#ifdef FT_CONFIG_OPTION_DEBUG_MEMORY
-    DM_Init_Mem();
-#endif
-
-    /* initialize i/o management (nothing) */
-
-    /* initialize synchronisation (nothing) */
-
-    /* initialize streams (nothing) */
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_System                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroys a given FreeType system object.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object'.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_Done_System( FT_System  system )
-  {
-    /* finalize synchronization (nothing) */
-
-    /* finalize i/o management (nothing) */
-
-    /* finalize memory management */
-
-#ifdef FT_CONFIG_OPTION_DEBUG_MEMORY
-    DM_Done_Mem();
-#endif
-
-    free( system );
-
-    return FT_Err_Ok;
-  }
-
-
-/* END */
--- a/config/ansi/ftsystem.c
+++ /dev/null
@@ -1,214 +1,0 @@
-/**************************************************************************
- *
- *  ftsystem.h                                                        1.0
- *
- *    ANSI-specific FreeType low-level system interface
- *
- *    This file contains the definition of interface used by FreeType
- *    to access low-level, i.e. memory management, i/o access as well
- *    as thread synchronisation.              
- *
- *
- *  Copyright 1996-1999 by                                                   
- *  David Turner, Robert Wilhelm, and Werner Lemberg                         
- *                                                                           
- *  This file is part of the FreeType project, and may only be used          
- *  modified and distributed under the terms of the FreeType project         
- *  license, LICENSE.TXT.  By continuing to use, modify, or distribute       
- *  this file you indicate that you have read the license and                 
- *  understand and accept it fully.                                          
- *                                                                           
- **************************************************************************/
-
-#include <ftsystem.h>
-#include <fterrors.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                       MEMORY MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Alloc_Func
- *
- * <Description>
- *    The memory allocator function type
- *
- * <Input>
- *    system    :: pointer to the system object
- *    size      :: requested size in bytes
- *
- * <Output>
- *    block     :: address of newly allocated block
- *
- * <Return>  
- *    Error code. 0 means success.
- *
- * <Note>
- *    If your allocation routine ALWAYS zeroes the new block, you
- *    should set the flag FT_SYSTEM_FLAG_ALLOC_ZEROES in your system
- *    object 'flags' field.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_alloc( FT_Memory  memory,
-                   long       size )
-  {
-    (void)memory;
-    return malloc(size);
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Realloc_Func
- *
- * <Description>
- *    The memory reallocator function type
- *
- * <Input>
- *    system   :: pointer to the system object
- *    new_size :: new requested size in bytes
- *
- * <InOut>
- *    block    :: address of block in memory
- *
- * <Return>
- *    Error code. 0 means success.
- *
- * <Note>
- *    This function is _never_ called when the system flag 
- *    FT_SYSTEM_FLAG_NO_REALLOC is set. Instead, the engine will emulate
- *    realloc through "alloc" and "free".
- *
- *    Note that this is possible due to the fact that FreeType's
- *    "FT_Realloc" always requests the _current_ size of the reallocated
- *    block as a parameter, thus avoiding memory leaks.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_realloc( FT_Memory  memory,
-                     long       cur_size,
-                     long       new_size,
-                     void*      block )
-  {
-    (void)memory;
-    (void)cur_size;
-
-    return realloc( block, new_size );
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Free_Func
- *
- * <Description>
- *    The memory release function type
- *
- * <Input>
- *    system  :: pointer to the system object
- *    block   :: address of block in memory
- *
- * <Note>
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void  ft_free( FT_Memory  memory,
-                 void*      block )
-  {
-    (void)memory;
-    free( block );
-  }
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                     RESOURCE MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-
-#define STREAM_FILE(stream)  ((FILE*)stream->descriptor.pointer)
-
-  static
-  void  ft_close_stream( FT_Stream  stream )
-  {
-    fclose( STREAM_FILE(stream) );
-  }
-
-  static
-  unsigned long  ft_io_stream( FT_Stream      stream,
-                               unsigned long  offset,
-                               char*          buffer,
-                               unsigned long  count )
-  {
-    FILE*  file;
-    
-    file = STREAM_FILE(stream);
-
-    fseek( file, offset, SEEK_SET );    
-    return (unsigned long)fread( buffer, 1, count, file );
-  }
-
-
-  extern
-  int  FT_New_Stream( const char*  filepathname,
-                      FT_Stream    stream )
-  {
-    FILE*  file;
-    
-    file = fopen( filepathname, "rb" );
-    if (!file)
-      return FT_Err_Cannot_Open_Resource;
-      
-    fseek( file, 0, SEEK_END );
-    stream->size = ftell(file);
-    fseek( file, 0, SEEK_SET );
-    
-    stream->descriptor.pointer = file;
-    stream->pos                = 0;
-    
-    stream->read  = ft_io_stream;
-    stream->close = ft_close_stream;
-
-    return 0;
-  }
-
-
-  extern
-  FT_Memory  FT_New_Memory( void )
-  {
-    FT_Memory  memory;
-    
-    memory = (FT_Memory)malloc( sizeof(*memory) );
-    if (memory)
-    {
-      memory->user    = 0;
-      memory->alloc   = ft_alloc;
-      memory->realloc = ft_realloc;
-      memory->free    = ft_free;
-    }
-    return memory;
-  }
-
--- a/config/dos/FTCONFIG.H
+++ /dev/null
@@ -1,182 +1,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftconfig.h                                                             */
-/*                                                                         */
-/*    ANSI-specific configuration file (specification only).               */
-/*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This header file contains a number of macro definitions that are used */
-  /* by the rest of the engine.  Porters are free to copy this file and    */
-  /* adapt it to suit their own system.                                    */
-  /*                                                                       */
-  /* IMPORTANT NOTE:                                                       */
-  /*                                                                       */
-  /*    Porters, read carefully the comments in `ftsys.h' before trying to */
-  /*    port this file to your system.  It contains many essential         */
-  /*    remarks, and will ease your work greatly.                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#ifndef FTCONFIG_H
-#define FTCONFIG_H
-
-/* Include the header file containing all developer build options */
-#include <ftoption.h>
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled to suit a specific system.  The current   */
-  /* ones are defaults used to compile FreeType in an ANSI C environment   */
-  /* (16bit compilers are also supported).  Copy this file to your own     */
-  /* `freetype/arch/<system>'  directory, and edit it to port the engine.  */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-/* Define to empty if the keyword does not work.  */
-/* #undef const */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* We use <limits.h> values to know the sizes of the types.  */
-#include <limits.h>
-
-/* The number of bytes in an `int' type.  */
-#if   UINT_MAX == 0xFFFFFFFF
-#define SIZEOF_INT  4
-#elif UINT_MAX == 0xFFFF
-#define SIZEOF_INT  2
-#elif UINT_MAX > 0xFFFFFFFF && UINT_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_INT  8
-#else
-#error "Unsupported number of bytes in `int' type!"
-#endif
-
-/* The number of bytes in a `long' type.  */
-#if   ULONG_MAX == 0xFFFFFFFF
-#define SIZEOF_LONG  4
-#elif ULONG_MAX > 0xFFFFFFFF && ULONG_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_LONG  8
-#else
-#error "Unsupported number of bytes in `long' type!"
-#endif
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 0
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 0
-
-
-/* Preferred alignment of data */
-#define FT_ALIGNMENT  8
-
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     AUTOMATIC CONFIGURATION MACROS                    */
-  /*                                                                       */
-  /*  These macros are computed from the ones defined above.  Don't touch  */
-  /*  their definition, unless you know precisely what you're doing.  No   */
-  /*  porter should need to mess with them.                                */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* IntN types                                                            */
-  /*                                                                       */
-  /*   Used to guarantee the size of some specific integers.               */
-  /*                                                                       */
-  typedef signed short    FT_Int16;
-  typedef unsigned short  FT_Word16;
-
-#if SIZEOF_INT == 4
-
-  typedef signed int      FT_Int32;
-  typedef unsigned int    FT_Word32;
-
-#elif SIZEOF_LONG == 4
-
-  typedef signed long     FT_Int32;
-  typedef unsigned long   FT_Word32;
-
-#else
-#error "no 32bit type found - please check your configuration files"
-#endif
-
-#if SIZEOF_LONG == 8
-
-  /* LONG64 must be defined when a 64-bit type is available */
-#define LONG64
-#define INT64   long
-
-#else
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI 'long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro in `ftconfig.h'.  Note  */
-  /* that this will produce many -ansi warnings during library             */
-  /* compilation.                                                          */
-  /*                                                                       */
-#ifdef FTCALC_USE_LONG_LONG
-
-#define LONG64
-#define INT64   long long
-
-#endif /* FTCALC_USE_LONG_LONG */
-#endif
-
-
-#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-#define  LOCAL_DEF   static
-#define  LOCAL_FUNC  static
-#else
-#define  LOCAL_DEF   extern
-#define  LOCAL_FUNC  /* nothing */
-#endif
-
-#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
-#define  BASE_DEF    LOCAL_DEF
-#define  BASE_FUNC   LOCAL_FUNC
-#else
-#define  BASE_DEF    extern
-#define  BASE_FUNC   /* nothing */
-#endif
-
-#ifndef  EXPORT_DEF
-#define  EXPORT_DEF   extern
-#endif
-
-#ifndef  EXPORT_FUNC
-#define  EXPORT_FUNC  /* nothing */
-#endif
-
-#endif /* FTCONFIG_H */
-
-
-/* END */
--- a/config/dos/FTSYSTEM.C
+++ /dev/null
@@ -1,214 +1,0 @@
-/**************************************************************************
- *
- *  ftsystem.h                                                        1.0
- *
- *    ANSI-specific FreeType low-level system interface
- *
- *    This file contains the definition of interface used by FreeType
- *    to access low-level, i.e. memory management, i/o access as well
- *    as thread synchronisation.              
- *
- *
- *  Copyright 1996-1999 by                                                   
- *  David Turner, Robert Wilhelm, and Werner Lemberg                         
- *                                                                           
- *  This file is part of the FreeType project, and may only be used          
- *  modified and distributed under the terms of the FreeType project         
- *  license, LICENSE.TXT.  By continuing to use, modify, or distribute       
- *  this file you indicate that you have read the license and                 
- *  understand and accept it fully.                                          
- *                                                                           
- **************************************************************************/
-
-#include <ftsystem.h>
-#include <fterrors.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                       MEMORY MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Alloc_Func
- *
- * <Description>
- *    The memory allocator function type
- *
- * <Input>
- *    system    :: pointer to the system object
- *    size      :: requested size in bytes
- *
- * <Output>
- *    block     :: address of newly allocated block
- *
- * <Return>  
- *    Error code. 0 means success.
- *
- * <Note>
- *    If your allocation routine ALWAYS zeroes the new block, you
- *    should set the flag FT_SYSTEM_FLAG_ALLOC_ZEROES in your system
- *    object 'flags' field.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_alloc( FT_Memory  memory,
-                   long       size )
-  {
-    (void)memory;
-    return malloc(size);
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Realloc_Func
- *
- * <Description>
- *    The memory reallocator function type
- *
- * <Input>
- *    system   :: pointer to the system object
- *    new_size :: new requested size in bytes
- *
- * <InOut>
- *    block    :: address of block in memory
- *
- * <Return>
- *    Error code. 0 means success.
- *
- * <Note>
- *    This function is _never_ called when the system flag 
- *    FT_SYSTEM_FLAG_NO_REALLOC is set. Instead, the engine will emulate
- *    realloc through "alloc" and "free".
- *
- *    Note that this is possible due to the fact that FreeType's
- *    "FT_Realloc" always requests the _current_ size of the reallocated
- *    block as a parameter, thus avoiding memory leaks.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_realloc( FT_Memory  memory,
-                     long       cur_size,
-                     long       new_size,
-                     void*      block )
-  {
-    (void)memory;
-    (void)cur_size;
-
-    return realloc( block, new_size );
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Free_Func
- *
- * <Description>
- *    The memory release function type
- *
- * <Input>
- *    system  :: pointer to the system object
- *    block   :: address of block in memory
- *
- * <Note>
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void  ft_free( FT_Memory  memory,
-                 void*      block )
-  {
-    (void)memory;
-    free( block );
-  }
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                     RESOURCE MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-
-#define STREAM_FILE(stream)  ((FILE*)stream->descriptor.pointer)
-
-  static
-  void  ft_close_stream( FT_Stream  stream )
-  {
-    fclose( STREAM_FILE(stream) );
-  }
-
-  static
-  unsigned long  ft_io_stream( FT_Stream      stream,
-                               unsigned long  offset,
-                               char*          buffer,
-                               unsigned long  count )
-  {
-    FILE*  file;
-    
-    file = STREAM_FILE(stream);
-
-    fseek( file, offset, SEEK_SET );    
-    return (unsigned long)fread( buffer, 1, count, file );
-  }
-
-
-  extern
-  int  FT_New_Stream( const char*  filepathname,
-                      FT_Stream    stream )
-  {
-    FILE*  file;
-    
-    file = fopen( filepathname, "rb" );
-    if (!file)
-      return FT_Err_Cannot_Open_Resource;
-      
-    fseek( file, 0, SEEK_END );
-    stream->size = ftell(file);
-    fseek( file, 0, SEEK_SET );
-    
-    stream->descriptor.pointer = file;
-    stream->pos                = 0;
-    
-    stream->read  = ft_io_stream;
-    stream->close = ft_close_stream;
-
-    return 0;
-  }
-
-
-  extern
-  FT_Memory  FT_New_Memory( void )
-  {
-    FT_Memory  memory;
-    
-    memory = (FT_Memory)malloc( sizeof(*memory) );
-    if (memory)
-    {
-      memory->user    = 0;
-      memory->alloc   = ft_alloc;
-      memory->realloc = ft_realloc;
-      memory->free    = ft_free;
-    }
-    return memory;
-  }
-
--- a/config/dos/MAKEFILE.GCC
+++ /dev/null
@@ -1,194 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-ifndef TOP
-TOP := .
-endif
-
-DELETE   := rm -f
-SEP      := /
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP)/config/dos
-PLATFORM := dos
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -l
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g -O6 -Wall
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#              nothing (if it already is by default like LCC).
-#
-ANSIFLAGS := -ansi -pedantic
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_dos
-distclean_freetype: distclean_freetype_dos
-
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $@
-	$(AR) -r $@ $(OBJECTS_LIST)
-
-endif
--- a/config/dos/detect.mk
+++ b/config/dos/detect.mk
@@ -19,7 +19,7 @@
 is_dos := $(findstring Dos,$(shell ver))
 
 # We try to recognize a Dos session under OS/2. The "ver" command
-# returns 'Operating System/2 ...' there so 'is_dos' should be empty
+# returns 'Operating System/2 ...' there, so 'is_dos' should be empty
 # there.
 #
 # To recognize a Dos session under OS/2, we check COMSPEC for the
@@ -40,7 +40,7 @@
 # Use gcc, i.e. DJGPP by default. Aren't we biased ;-)
 #
 #
-CONFIG_FILE := Makefile.gcc
+CONFIG_FILE := dos-gcc.mk
 SEP         := /
 ifndef CC
 CC          := gcc
@@ -48,7 +48,7 @@
 
 
 ifneq ($(findstring turboc,$(MAKECMDGOALS)),)     # Turbo C
-CONFIG_FILE := Makefile.tcc
+CONFIG_FILE := dos-tcc.mk
 SEP         := $(BACKSLASH)
 CC          := tcc
 .PHONY: turboc
@@ -55,7 +55,7 @@
 endif
 
 ifneq ($(findstring watcom,$(MAKECMDGOALS)),)     # Watcom C/C++
-CONFIG_FILE := Makefile.wat
+CONFIG_FILE := dos-wat.mk
 SEP         := $(BACKSLASH)
 CC          := wcc386
 .PHONY: watcom
@@ -62,7 +62,7 @@
 endif
 
 ifneq ($(findstring borlandc16,$(MAKECMDGOALS)),)   # Borland C/C++ 16 bits
-CONFIG_FILE := Makefile.bcc
+CONFIG_FILE := dos-bcc.mk
 SEP         := $(BACKSLASH)
 CC          := bcc
 .PHONY: borlandc16
@@ -69,7 +69,7 @@
 endif
 
 ifneq ($(findstring borlandc,$(MAKECMDGOALS)),)   # Borland C/C++ 32 bits
-CONFIG_FILE := Makefile.bcc
+CONFIG_FILE := dos-bcc.mk
 SEP         := $(BACKSLASH)
 CC          := bcc32
 .PHONY: borlandc
--- /dev/null
+++ b/config/dos/dos-gcc.mk
@@ -1,0 +1,131 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for Dos + GCC
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := rm -f
+SEP      := /
+HOSTSEP  := $(strip \ )
+BUILD    := $(TOP)/config/dos
+PLATFORM := dos
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g -O6 -Wall
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#              nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $@
+	$(AR) -r $@ $(OBJECTS_LIST)
+
+endif
--- a/config/dos/ftmodule.h
+++ /dev/null
@@ -1,4 +1,0 @@
-FT_DRIVER(sfnt_driver_interface)
-FT_DRIVER(tt_driver_interface)
-FT_DRIVER(t1_driver_interface)
-FT_DRIVER(psnames_driver_interface)
--- a/config/dos/ftoption.h
+++ /dev/null
@@ -1,204 +1,0 @@
-#ifndef FTOPTION_H
-#define FTOPTION_H
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled by developers to enable or disable        */
-  /* certain aspects of FreeType.  This file contains macros that apply to */
-  /* all of FreeType.  Driver-specific configurations are placed in each   */
-  /* driver directory (e.g. `freetype/drivers/ttlib/ttconfig.h').          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Alternate Glyph Image Format support                                  */
-  /*                                                                       */
-  /*   By default, the glyph images returned by the FreeType glyph loader  */
-  /*   can either be a pixmap or a vectorial outline defined through       */
-  /*   bezier control points. When defining the following configuration    */
-  /*   macro, some font drivers will be able to register alternate         */
-  /*   glyph image formats.                                                */
-  /*                                                                       */
-  /*   Unset this macro if you're sure that you'll never use a font driver */
-  /*   with an alternate glyph format, this will reduce the size of the    */
-  /*   base layer code.                                                    */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Glyph Postscript Names handling                                       */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. This module is in charge of converting a glyph name string into */
-  /*   a Unicode value, or return a Macintosh standard glyph name for the  */
-  /*   use with the TrueType "post" table.                                 */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the "psnames" compiled in    */
-  /*   your build of FreeType. This has the following effects :            */
-  /*                                                                       */
-  /*   - the TrueType driver will provide its own set of glyph names,      */
-  /*     if you build it to support postscript names in the TrueType       */
-  /*     "post" table.                                                     */
-  /*                                                                       */
-  /*   - the Type 1 driver will not be able to synthetize a                */
-  /*     Unicode charmap out of the glyphs found in the fonts.             */
-  /*                                                                       */
-  /*   You would normally undefine this configuration macro when           */
-  /*   building a version of FreeType that doesn't contain a Type 1        */
-  /*   or CFF driver.                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Postscript Names to Unicode Values support                            */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. Among other things, the module is used to convert a glyph       */
-  /*   name into a unicode value. This is especially useful in order to    */
-  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */
-  /*   through a big table named the "Adobe Glyph List".                   */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the Adobe Glyph List         */
-  /*   compiled in your "psnames" module. The Type 1 driver will not       */
-  /*   be able to synthetize a Unicode charmap out of the glyphs found     */
-  /*   in the fonts..                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI `long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro here.  Note however     */
-  /* that we did not experience any improvement in speed with gcc, and     */
-  /* that the final code seems bigger when linked.                         */
-  /*                                                                       */
-#undef FTCALC_USE_LONG_LONG
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* When compiling FreeType as a DLL, some systems/compilers need a       */
-  /* special keyword in front of each function definition instead of       */
-  /* `extern'.                                                             */
-  /*                                                                       */
-  /* The macros EXPORT_DEF and EXPORT_FUNC are thus used to define         */
-  /* exported library function interfaces and exported library functions   */
-  /* implementations respectively.                                         */
-  /*                                                                       */
-  /* If not defined here, they automatically default to `extern' and void  */
-  /* later in this header file.                                            */
-  /*                                                                       */
-#undef EXPORT_DEF
-#undef EXPORT_FUNC
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Debug level                                                           */
-  /*                                                                       */
-  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
-  /*   errors are reported through the `ftdebug' component.  In trace      */
-  /*   mode, additional messages are sent to the standard output during    */
-  /*   execution.                                                          */
-  /*                                                                       */
-  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
-  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
-  /*                                                                       */
-  /*   Don't define any of these macros to compile in `release' mode.      */
-  /*                                                                       */
-#undef  FT_DEBUG_LEVEL_ERROR
-#undef  FT_DEBUG_LEVEL_TRACE
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Anti-aliasing support                                                 */
-  /*                                                                       */
-  /*   Undefine this macro only if you want to disable the anti-aliasing   */
-  /*   support in FreeType.  This will save you about 5 Kb of code.  It    */
-  /*   may be important for some embedded systems.                         */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ANTI_ALIAS
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Endianess performance improvement                                     */
-  /*                                                                       */
-  /*   FreeType is completely endian-independent, and can thus be compiled */
-  /*   directly on _any_ machine.  However, some components of the library */
-  /*   provide improved routines for the cases where endianess is known.   */
-  /*                                                                       */
-  /*   It usually results in speed-ups and reduced code size.  Note that   */
-  /*   you should not define both of these macros.                         */
-  /*                                                                       */
-  /*                                                                       */
-  /*   NOTE: For now, only the scan-line converter (base/ftraster.c) uses  */
-  /*         these macros to speed-up some anti-alias rendering routines.  */
-  /*                                                                       */
-#undef  FT_CONFIG_OPTION_LITTLE_ENDIAN
-#undef  FT_CONFIG_OPTION_BIG_ENDIAN
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro whenever you want to build a version  */
-  /* of FreeType that does not include a default `system' component.       */
-  /*                                                                       */
-  /* Note that this will prevent the compilation of `ftinit', hence the    */
-  /* function FT_Init_FreeType                                             */
-  /*                                                                       */
-#undef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    The size in bytes of the render pool used by the scan-line         */
-  /*    converter to do all of its work.                                   */
-  /*                                                                       */
-  /*    This must be greater than 4 Kb                                     */
-  /*                                                                       */
-#define FT_RENDER_POOL_SIZE   32768
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_DRIVERS                                                     */
-  /*                                                                       */
-  /*    The maximum number of font drivers that can be registered in a     */
-  /*    single FreeType library object.  8 seems to be a good choice due   */
-  /*    to the relative low actual number of drivers ;-)                   */
-  /*                                                                       */
-#define FT_MAX_DRIVERS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_EXTENSIONS                                                  */
-  /*                                                                       */
-  /*    The maximum number of extensions that can be registered in a       */
-  /*    single font driver. 8 seems to be a good choice for now..          */
-  /*                                                                       */
-#define FT_MAX_EXTENSIONS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_GLYPH_FORMATS                                               */
-  /*                                                                       */
-  /*    The maximum number of glyph image formats that might be registered */
-  /*    in a given library instance. 8 seems to be a good choice due to    */
-  /*    the relatively low number of current formats ;-)                   */
-  /*                                                                       */
-
-#define FT_MAX_GLYPH_FORMATS  8
-
-
-
-#endif /* FTOPTION_H */
--- a/config/freetype.mk
+++ b/config/freetype.mk
@@ -23,8 +23,8 @@
 #
 include $(TOP)/config/modules.mk
 
-# The targets `objects', `library' and `multiple' are defined
-# at the end of this Makefile when all rules have been included..
+# The targets `objects', `library' are defined at the end of
+# this Makefile when all rules have been included..
 #
 .PHONY: build_freetype objects library
 
@@ -59,10 +59,11 @@
 OBJ_    := $(OBJ_DIR)$(SEP)
 LIB_    := $(LIB_DIR)$(SEP)
 PUBLIC_ := $(TOP)$(SEP)include$(SEP)
+CONFIG_ := $(TOP)$(SEP)config$(SEP)
 
 # The name of the final library file.
 #
-FT_LIBRARY := $(LIB_DIR)$(SEP)$(LIBRARY).$A
+FT_LIBRARY := $(LIB_)$(LIBRARY).$A
 
 
 # include paths
@@ -70,10 +71,10 @@
 # IMPORTANT NOTE: The architecture-dependent directory must ALWAYS be placed
 #                 in front of the include list.  Porters are then able to put
 #                 their own version of some of the FreeType components in
-#                 the 'freetype/arch/<system>' directory, as these files
+#                 the 'freetype/config/<system>' directory, as these files
 #                 will override the default sources.
 #
-INCLUDES := $(BUILD) $(TOP)$(SEP)include $(INCLUDES)
+INCLUDES := $(BUILD) $(TOP)$(SEP)config $(TOP)$(SEP)include $(INCLUDES)
 
 INCLUDE_FLAGS = $(INCLUDES:%=$I%)
 
@@ -95,14 +96,20 @@
 OBJECTS_LIST    :=
 
 # System-specific component - this must be defined in this Makefile
-# for easy updates
+# for easy updates. The default Ansi ftsystem.c is located in
+# 'freetype/config/ftsystem.c'. However, some system-specific
+# configuration might define FTSYS_SRC to fetch it in other places,
+# like 'freetype/config/<system>/ftsystem.c'
 #
 # BASE_H is defined in src/base/rules.mk and contains the list of all
 # base layer header files.
 #
-FTSYS_SRC = $(BUILD)$(SEP)ftsystem.c
-FTSYS_OBJ = $(OBJ_DIR)$(SEP)ftsystem.$O
+ifndef FTSYS_SRC
+FTSYS_SRC = $(BASE_)ftsystem.c
+endif
 
+FTSYS_OBJ = $(OBJ_)ftsystem.$O
+
 OBJECTS_LIST += $(FTSYS_OBJ)
 
 $(FTSYS_OBJ): $(FTSYS_SRC) $(BASE_H)
@@ -111,8 +118,9 @@
 
 # ftdebug component
 #
+# FTDebug contains code used to print traces and errors. It is
+# normally empty for a release build (see ftoption.h)
 #
-#
 
 FTDEBUG_SRC = $(BASE_)ftdebug.c
 FTDEBUG_OBJ = $(OBJ_)ftdebug.$O
@@ -144,27 +152,36 @@
 #   The set of initial drivers is determined by the driver Makefiles
 #   includes above.  Each driver Makefile updates the FTINIT_xxxx lists
 #   which contain additional include paths and macros used to compile the
-#   single 'ftapi.c' source.
+#   single 'ftinit.c' source.
 #
-FTINIT_SRC := $(BASE_DIR)$(SEP)ftinit.c
+FTINIT_SRC := $(BASE_)ftinit.c
 FTINIT_OBJ := $(OBJ_)ftinit.$O
 
-$(FTINIT_OBJ): $(FTINIT_SRC) $(BASE_H) $(FTINIT_DRIVER_H) $(FT_MODULE_LIST)
-	$(FT_COMPILE) $(FTINIT_DRIVER_PATHS:%=$I%) \
-                      $(FTINIT_DRIVER_MACROS:%=$D%) $T$@ $<
+OBJECTS_LIST += $(FTINIT_OBJ)
 
+$(FTINIT_OBJ): $(FTINIT_SRC) $(BASE_H) $(FT_MODULE_LIST)
+	$(FT_COMPILE) $T$@ $<
 
+
 # All FreeType library objects
 #
 #   By default, we include the base layer extensions.  These could be
 #   ommitted on builds which do not want them.
 #
-OBJ_M = $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M) \
-        $(FTINIT_OBJ)
+OBJ_M = $(BASE_OBJ_M) $(BASE_EXT_OBJ) $(DRV_OBJS_M)
 
-OBJ_S = $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S) \
-        $(FTINIT_OBJ)
+OBJ_S = $(BASE_OBJ_S) $(BASE_EXT_OBJ) $(DRV_OBJS_S)
 
+# the target 'multi' on the Make command line indicates that we want
+# to compile each source file independently..
+#
+# Otherwise, each module/driver is compiled in a single object file
+# through source file inclusion (see 'src/base/ftbase.c' or
+# 'src/truetype/truetype.c' for examples)
+#
+
+BASE_OBJECTS := $(OBJECTS_LIST)
+
 ifneq ($(findstring multi,$(MAKECMDGOALS)),)
 OBJECTS_LIST += $(OBJ_M)
 else
@@ -183,7 +200,7 @@
 # on all systems though..
 #
 clean_freetype_std:
-	-$(DELETE) $(OBJ_S) $(OBJ_M)
+	-$(DELETE) $(BASE_OBJECTS) $(OBJS_M) $(OBJS_S)
 
 distclean_freetype_std: clean_freetype_std
 	-$(DELETE) $(FT_LIBRARY)
@@ -199,6 +216,8 @@
 distclean_freetype_dos: clean_freetype_dos
 	-del $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
 
+# remove configuration file (used for distclean)
+#
 remove_config_mk:
 	-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(CONFIG_MK))
 
--- /dev/null
+++ b/config/ftconfig.h
@@ -1,0 +1,186 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftconfig.h                                                             */
+/*                                                                         */
+/*    ANSI-specific configuration file (specification only).               */
+/*                                                                         */
+/*  Copyright 1996-2000 by                                                 */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used        */
+/*  modified and distributed under the terms of the FreeType project       */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* This header file contains a number of macro definitions that are used */
+  /* by the rest of the engine. Most of the macros here are automatically  */
+  /* determined at compile time, and you should not need to change it to   */
+  /* port FreeType, except to compile the library with a non ANSI compiler */
+  /*                                                                       */
+  /* Note however that if some specific modifications are needed, we       */
+  /* advise you to place a modified copy in your build directory.          */
+  /*                                                                       */
+  /* The build directory is usually "freetype/config/<system>", and        */
+  /* contains system-specific files that are always included first when    */
+  /* building the library..                                                */
+  /*                                                                       */
+  /* This ANSI version should stay in "freetype/config"                    */
+  /*                                                                       */
+  /*************************************************************************/
+
+#ifndef FTCONFIG_H
+#define FTCONFIG_H
+
+/* Include the header file containing all developer build options */
+#include <ftoption.h>
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
+  /*                                                                       */
+  /* These macros can be toggled to suit a specific system.  The current   */
+  /* ones are defaults used to compile FreeType in an ANSI C environment   */
+  /* (16bit compilers are also supported).  Copy this file to your own     */
+  /* `freetype/arch/<system>'  directory, and edit it to port the engine.  */
+  /*                                                                       */
+  /*************************************************************************/
+
+
+/* Define to empty if the keyword does not work.  */
+/* #undef const */
+
+/* Define if you have the ANSI C header files.  */
+#define STDC_HEADERS 1
+
+/* We use <limits.h> values to know the sizes of the types.  */
+#include <limits.h>
+
+/* The number of bytes in an `int' type.  */
+#if   UINT_MAX == 0xFFFFFFFF
+#define SIZEOF_INT  4
+#elif UINT_MAX == 0xFFFF
+#define SIZEOF_INT  2
+#elif UINT_MAX > 0xFFFFFFFF && UINT_MAX == 0xFFFFFFFFFFFFFFFF
+#define SIZEOF_INT  8
+#else
+#error "Unsupported number of bytes in `int' type!"
+#endif
+
+/* The number of bytes in a `long' type.  */
+#if   ULONG_MAX == 0xFFFFFFFF
+#define SIZEOF_LONG  4
+#elif ULONG_MAX > 0xFFFFFFFF && ULONG_MAX == 0xFFFFFFFFFFFFFFFF
+#define SIZEOF_LONG  8
+#else
+#error "Unsupported number of bytes in `long' type!"
+#endif
+
+/* Define if you have the memcpy function.  */
+#define HAVE_MEMCPY 1
+
+/* Define if you have the <fcntl.h> header file.  */
+#define HAVE_FCNTL_H 0
+
+/* Define if you have the <unistd.h> header file.  */
+#define HAVE_UNISTD_H 0
+
+
+/* Preferred alignment of data */
+#define FT_ALIGNMENT  8
+
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*                     AUTOMATIC CONFIGURATION MACROS                    */
+  /*                                                                       */
+  /*  These macros are computed from the ones defined above.  Don't touch  */
+  /*  their definition, unless you know precisely what you're doing.  No   */
+  /*  porter should need to mess with them.                                */
+  /*                                                                       */
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* IntN types                                                            */
+  /*                                                                       */
+  /*   Used to guarantee the size of some specific integers.               */
+  /*                                                                       */
+  typedef signed short    FT_Int16;
+  typedef unsigned short  FT_Word16;
+
+#if SIZEOF_INT == 4
+
+  typedef signed int      FT_Int32;
+  typedef unsigned int    FT_Word32;
+
+#elif SIZEOF_LONG == 4
+
+  typedef signed long     FT_Int32;
+  typedef unsigned long   FT_Word32;
+
+#else
+#error "no 32bit type found - please check your configuration files"
+#endif
+
+#if SIZEOF_LONG == 8
+
+  /* LONG64 must be defined when a 64-bit type is available */
+#define LONG64
+#define INT64   long
+
+#else
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* many compilers provide the non-ANSI 'long long' 64-bit type.  You can */
+  /* activate it by defining the FTCALC_USE_LONG_LONG macro in `ftoption.h'*/
+  /* Note that this will produce many -ansi warnings during library        */
+  /* compilation, and that in many cases, the generated code will not be   */
+  /* smaller or faster !!                                                  */
+  /*                                                                       */
+#ifdef FTCALC_USE_LONG_LONG
+
+#define LONG64
+#define INT64   long long
+
+#endif /* FTCALC_USE_LONG_LONG */
+#endif
+
+
+#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
+#define  LOCAL_DEF   static
+#define  LOCAL_FUNC  static
+#else
+#define  LOCAL_DEF   extern
+#define  LOCAL_FUNC  /* nothing */
+#endif
+
+#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
+#define  BASE_DEF    LOCAL_DEF
+#define  BASE_FUNC   LOCAL_FUNC
+#else
+#define  BASE_DEF    extern
+#define  BASE_FUNC   /* nothing */
+#endif
+
+#ifndef  EXPORT_DEF
+#define  EXPORT_DEF   extern
+#endif
+
+#ifndef  EXPORT_FUNC
+#define  EXPORT_FUNC  /* nothing */
+#endif
+
+#endif /* FTCONFIG_H */
+
+
+/* END */
--- /dev/null
+++ b/config/ftmodule.h
@@ -1,0 +1,5 @@
+FT_DRIVER(psnames_driver_interface)
+FT_DRIVER(sfnt_driver_interface)
+FT_DRIVER(tt_driver_interface)
+FT_DRIVER(t1_driver_interface)
+FT_DRIVER(t1z_driver_interface)
--- /dev/null
+++ b/config/ftoption.h
@@ -1,0 +1,229 @@
+/***************************************************************************/
+/*                                                                         */
+/*  ftoption.h                                                             */
+/*                                                                         */
+/*    User-selectable configuration macros.                                */
+/*                                                                         */
+/*  Copyright 1996-2000 by                                                 */
+/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
+/*                                                                         */
+/*  This file is part of the FreeType project, and may only be used        */
+/*  modified and distributed under the terms of the FreeType project       */
+/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
+/*  this file you indicate that you have read the license and              */
+/*  understand and accept it fully.                                        */
+/*                                                                         */
+/***************************************************************************/
+
+#ifndef FTOPTION_H
+#define FTOPTION_H
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
+  /*                                                                       */
+  /* These macros can be toggled by developers to enable or disable        */
+  /* certain aspects of FreeType. This is a default file, where all major  */
+  /* options are enabled.                                                  */
+  /*                                                                       */
+  /* Note that if some modifications are required for your build, we       */
+  /* advise you to put a modified copy of this file in your build          */
+  /* directory, rather than modifying it in-place.                         */
+  /*                                                                       */
+  /* The build directory is normally "freetype/config/<system>" and        */
+  /* contains build or system-specific files that are included in          */
+  /* priority when building the library.                                   */
+  /*                                                                       */
+  /*************************************************************************/
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Alternate Glyph Image Format support                                  */
+  /*                                                                       */
+  /*   By default, the glyph images returned by the FreeType glyph loader  */
+  /*   can either be a pixmap or a vectorial outline defined through       */
+  /*   bezier control points. When defining the following configuration    */
+  /*   macro, some font drivers will be able to register alternate         */
+  /*   glyph image formats.                                                */
+  /*                                                                       */
+  /*   Unset this macro if you're sure that you'll never use a font driver */
+  /*   with an alternate glyph format, this will reduce the size of the    */
+  /*   base layer code.                                                    */
+  /*                                                                       */
+  /*   Note that a few Type 1 fonts, as well as Windows "Vector" fonts     */
+  /*   use a vector "plotter" format that isn't supported when this        */
+  /*   macro is undefined..                                                */
+  /*                                                                       */
+#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Glyph Postscript Names handling                                       */
+  /*                                                                       */
+  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
+  /*   in. This module is in charge of converting a glyph name string into */
+  /*   a Unicode value, or return a Macintosh standard glyph name for the  */
+  /*   use with the TrueType "post" table.                                 */
+  /*                                                                       */
+  /*   Undefine this macro if you do not want the "psnames" compiled in    */
+  /*   your build of FreeType. This has the following effects :            */
+  /*                                                                       */
+  /*   - the TrueType driver will provide its own set of glyph names,      */
+  /*     if you build it to support postscript names in the TrueType       */
+  /*     "post" table.                                                     */
+  /*                                                                       */
+  /*   - the Type 1 driver will not be able to synthetize a                */
+  /*     Unicode charmap out of the glyphs found in the fonts.             */
+  /*                                                                       */
+  /*   You would normally undefine this configuration macro when           */
+  /*   building a version of FreeType that doesn't contain a Type 1        */
+  /*   or CFF driver.                                                      */
+  /*                                                                       */
+#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Postscript Names to Unicode Values support                            */
+  /*                                                                       */
+  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
+  /*   in. Among other things, the module is used to convert a glyph       */
+  /*   name into a unicode value. This is especially useful in order to    */
+  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */
+  /*   through a big table named the "Adobe Glyph List".                   */
+  /*                                                                       */
+  /*   Undefine this macro if you do not want the Adobe Glyph List         */
+  /*   compiled in your "psnames" module. The Type 1 driver will not       */
+  /*   be able to synthetize a Unicode charmap out of the glyphs found     */
+  /*   in the fonts..                                                      */
+  /*                                                                       */
+#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* many compilers provide the non-ANSI 'long long' 64-bit type.  You can */
+  /* activate it by defining the FTCALC_USE_LONG_LONG macro in `ftoption.h'*/
+  /* Note that this will produce many -ansi warnings during library        */
+  /* compilation, and that in many cases, the generated code will not be   */
+  /* smaller or faster !!                                                  */
+  /*                                                                       */
+#undef FTCALC_USE_LONG_LONG
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* When compiling FreeType as a DLL, some systems/compilers need a       */
+  /* special keyword in front of each function definition instead of       */
+  /* `extern'.                                                             */
+  /*                                                                       */
+  /* The macros EXPORT_DEF and EXPORT_FUNC are thus used to define         */
+  /* exported library function interfaces and exported library functions   */
+  /* implementations respectively.                                         */
+  /*                                                                       */
+  /* If not defined here, they automatically default to `extern' and void  */
+  /* later in this header file.                                            */
+  /*                                                                       */
+#undef EXPORT_DEF
+#undef EXPORT_FUNC
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Debug level                                                           */
+  /*                                                                       */
+  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
+  /*   errors are reported through the `ftdebug' component.  In trace      */
+  /*   mode, additional messages are sent to the standard output during    */
+  /*   execution.                                                          */
+  /*                                                                       */
+  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
+  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
+  /*                                                                       */
+  /*   Don't define any of these macros to compile in `release' mode.      */
+  /*                                                                       */
+#undef  FT_DEBUG_LEVEL_ERROR
+#undef  FT_DEBUG_LEVEL_TRACE
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Anti-aliasing support                                                 */
+  /*                                                                       */
+  /*   Undefine this macro only if you want to disable the anti-aliasing   */
+  /*   support in FreeType.  This will save you about 5 Kb of code.  It    */
+  /*   may be important for some embedded systems.                         */
+  /*                                                                       */
+#define FT_CONFIG_OPTION_ANTI_ALIAS
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /* Endianess performance improvement                                     */
+  /*                                                                       */
+  /*   FreeType is completely endian-independent, and can thus be compiled */
+  /*   directly on _any_ machine.  However, some components of the library */
+  /*   provide improved routines for the cases where endianess is known.   */
+  /*                                                                       */
+  /*   It usually results in speed-ups and reduced code size.  Note that   */
+  /*   you should not define both of these macros.                         */
+  /*                                                                       */
+  /*                                                                       */
+  /*   NOTE: For now, only the scan-line converter (base/ftraster.c) uses  */
+  /*         these macros to speed-up some anti-alias rendering routines.  */
+  /*                                                                       */
+#undef  FT_CONFIG_OPTION_LITTLE_ENDIAN
+#undef  FT_CONFIG_OPTION_BIG_ENDIAN
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*    The size in bytes of the render pool used by the scan-line         */
+  /*    converter to do all of its work.                                   */
+  /*                                                                       */
+  /*    This must be greater than 4 Kb                                     */
+  /*                                                                       */
+#define FT_RENDER_POOL_SIZE   8192
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*    FT_MAX_DRIVERS                                                     */
+  /*                                                                       */
+  /*    The maximum number of font drivers that can be registered in a     */
+  /*    single FreeType library object.  8 seems to be a good choice due   */
+  /*    to the relative low actual number of drivers ;-)                   */
+  /*                                                                       */
+  /*    If you don't intend to register new drivers at runtime, you        */
+  /*    certainly do not need to change this value..                       */
+  /*                                                                       */
+#define FT_MAX_DRIVERS  8
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*    FT_MAX_EXTENSIONS                                                  */
+  /*                                                                       */
+  /*    The maximum number of extensions that can be registered in a       */
+  /*    single font driver. 8 seems to be a good choice for now..          */
+  /*                                                                       */
+  /*    If you don't know what this means, you certainly do not need to    */
+  /*    change this value..                                                */
+  /*                                                                       */
+#define FT_MAX_EXTENSIONS  8
+
+
+  /*************************************************************************/
+  /*                                                                       */
+  /*    FT_MAX_GLYPH_FORMATS                                               */
+  /*                                                                       */
+  /*    The maximum number of glyph image formats that might be registered */
+  /*    in a given library instance. 8 seems to be a good choice due to    */
+  /*    the relatively low number of current formats ;-)                   */
+  /*                                                                       */
+#define FT_MAX_GLYPH_FORMATS  8
+
+
+#endif /* FTOPTION_H */
--- a/config/modules.mk
+++ b/config/modules.mk
@@ -17,7 +17,7 @@
 #*  OTHER MAKEFILES.                                                        *
 #*                                                                          *
 #*  This file is in charge of handling the generation of the modules list   *
-#*  file, normally located in `config/<platform>/modules'.                  *
+#*  file, normally located in `config/ftmodule.h'                           *
 #*                                                                          *
 #****************************************************************************
 
@@ -26,7 +26,9 @@
 # MODULE_LIST, as it name suggests, indicate where the modules list
 # reside. For now, it is in $(BUILD)/ftmodule.h
 #
-FT_MODULE_LIST := $(BUILD)$(SEP)ftmodule.h
+ifndef FT_MODULE_LIST
+FT_MODULE_LIST := $(TOP)$(SEP)config$(SEP)ftmodule.h
+endif
 
 # To build the modules list, we invoke the `make_module_list' target
 #
@@ -56,7 +58,7 @@
 OPEN_DRIVER  := $(OPEN_MODULE)FT_DRIVER(
 CLOSE_DRIVER := )$(CLOSE_MODULE)
 
-ECHO_DRIVER      := @echo "* driver:  
+ECHO_DRIVER      := @echo "* driver: 
 ECHO_DRIVER_DESC := (
 ECHO_DRIVER_DONE := )"
 
--- a/config/os2/Makefile.emx
+++ /dev/null
@@ -1,217 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-ifndef TOP
-TOP := .
-endif
-
-DELETE   := del
-SEP      := /
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP)/config/os2
-PLATFORM := os2
-CC       := gcc
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -l
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g -O6 -Wall
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS := -ansi -pedantic
-
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_dos
-distclean_freetype: distclean_freetype_dos
-
-# Librarian to use to build the static library
-#
-FT_LIBRARIAN := $(AR) -r
-
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $@
-	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
-
-
-# Cleaning rules
-#
-DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR))
-
-clean_freetype_objects:
-	-del $(DIR_OBJ)\*.$O
-
-clean_freetype_lib:
-	-del $(subst $(SEP),\,$(FT_LIBRARY))
-
-clean: clean_freetype_objects
-
-
-
-endif
-
-
--- a/config/os2/detect.mk
+++ b/config/os2/detect.mk
@@ -15,11 +15,11 @@
 COPY     := copy
 DELETE   := del
 
-CONFIG_FILE := Makefile.emx   # gcc-emx by default
+CONFIG_FILE := os2-gcc.mk   # gcc-emx by default
 SEP         := /
 
 ifneq ($(findstring visualage,$(MAKECMDGOALS)),)     # Visual Age C++
-CONFIG_FILE := Makefile.icc
+CONFIG_FILE := os2-icc.mk
 SEP         := $(BACKSLASH)
 CC          := icc
 .PHONY: visualage
@@ -26,7 +26,7 @@
 endif
 
 ifneq ($(findstring watcom,$(MAKECMDGOALS)),)        # Watcom C/C++
-CONFIG_FILE := Makefile.wat
+CONFIG_FILE := os2-wat.mk
 SEP         := $(BACKSLASH)
 CC          := wcc386
 .PHONY: watcom
@@ -33,10 +33,17 @@
 endif
 
 ifneq ($(findstring borlandc,$(MAKECMDGOALS)),)      # Borland C++ 32 bits
-CONFIG_FILE := Makefile.bcc
+CONFIG_FILE := os2-bcc.mk
 SEP         := $(BACKSLASH)
 CC          := bcc32
 .PHONY: borlandc
+endif
+
+ifneq ($(findstring devel,$(MAKECMDGOALS)),)
+CONFIG_FILE := os2-dev.mk
+CC          := gcc
+SEP         := /
+devel: setup
 endif
 
 CONFIG_RULES := $(TOP)\config\os2\$(CONFIG_FILE)
--- a/config/os2/ftconfig.h
+++ /dev/null
@@ -1,182 +1,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftconfig.h                                                             */
-/*                                                                         */
-/*    ANSI-specific configuration file (specification only).               */
-/*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This header file contains a number of macro definitions that are used */
-  /* by the rest of the engine.  Porters are free to copy this file and    */
-  /* adapt it to suit their own system.                                    */
-  /*                                                                       */
-  /* IMPORTANT NOTE:                                                       */
-  /*                                                                       */
-  /*    Porters, read carefully the comments in `ftsys.h' before trying to */
-  /*    port this file to your system.  It contains many essential         */
-  /*    remarks, and will ease your work greatly.                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#ifndef FTCONFIG_H
-#define FTCONFIG_H
-
-/* Include the header file containing all developer build options */
-#include <ftoption.h>
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled to suit a specific system.  The current   */
-  /* ones are defaults used to compile FreeType in an ANSI C environment   */
-  /* (16bit compilers are also supported).  Copy this file to your own     */
-  /* `freetype/arch/<system>'  directory, and edit it to port the engine.  */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-/* Define to empty if the keyword does not work.  */
-/* #undef const */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* We use <limits.h> values to know the sizes of the types.  */
-#include <limits.h>
-
-/* The number of bytes in an `int' type.  */
-#if   UINT_MAX == 0xFFFFFFFF
-#define SIZEOF_INT  4
-#elif UINT_MAX == 0xFFFF
-#define SIZEOF_INT  2
-#elif UINT_MAX > 0xFFFFFFFF && UINT_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_INT  8
-#else
-#error "Unsupported number of bytes in `int' type!"
-#endif
-
-/* The number of bytes in a `long' type.  */
-#if   ULONG_MAX == 0xFFFFFFFF
-#define SIZEOF_LONG  4
-#elif ULONG_MAX > 0xFFFFFFFF && ULONG_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_LONG  8
-#else
-#error "Unsupported number of bytes in `long' type!"
-#endif
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 0
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 0
-
-
-/* Preferred alignment of data */
-#define FT_ALIGNMENT  8
-
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     AUTOMATIC CONFIGURATION MACROS                    */
-  /*                                                                       */
-  /*  These macros are computed from the ones defined above.  Don't touch  */
-  /*  their definition, unless you know precisely what you're doing.  No   */
-  /*  porter should need to mess with them.                                */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* IntN types                                                            */
-  /*                                                                       */
-  /*   Used to guarantee the size of some specific integers.               */
-  /*                                                                       */
-  typedef signed short    FT_Int16;
-  typedef unsigned short  FT_Word16;
-
-#if SIZEOF_INT == 4
-
-  typedef signed int      FT_Int32;
-  typedef unsigned int    FT_Word32;
-
-#elif SIZEOF_LONG == 4
-
-  typedef signed long     FT_Int32;
-  typedef unsigned long   FT_Word32;
-
-#else
-#error "no 32bit type found - please check your configuration files"
-#endif
-
-#if SIZEOF_LONG == 8
-
-  /* LONG64 must be defined when a 64-bit type is available */
-#define LONG64
-#define INT64   long
-
-#else
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI 'long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro in `ftconfig.h'.  Note  */
-  /* that this will produce many -ansi warnings during library             */
-  /* compilation.                                                          */
-  /*                                                                       */
-#ifdef FTCALC_USE_LONG_LONG
-
-#define LONG64
-#define INT64   long long
-
-#endif /* FTCALC_USE_LONG_LONG */
-#endif
-
-
-#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-#define  LOCAL_DEF   static
-#define  LOCAL_FUNC  static
-#else
-#define  LOCAL_DEF   extern
-#define  LOCAL_FUNC  /* nothing */
-#endif
-
-#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
-#define  BASE_DEF    LOCAL_DEF
-#define  BASE_FUNC   LOCAL_FUNC
-#else
-#define  BASE_DEF    extern
-#define  BASE_FUNC   /* nothing */
-#endif
-
-#ifndef  EXPORT_DEF
-#define  EXPORT_DEF   extern
-#endif
-
-#ifndef  EXPORT_FUNC
-#define  EXPORT_FUNC  /* nothing */
-#endif
-
-#endif /* FTCONFIG_H */
-
-
-/* END */
--- a/config/os2/ftmodule.h
+++ /dev/null
@@ -1,4 +1,0 @@
-FT_DRIVER(psnames_driver_interface)
-FT_DRIVER(sfnt_driver_interface)
-FT_DRIVER(tt_driver_interface)
-FT_DRIVER(t1_driver_interface)
--- a/config/os2/ftoption.h
+++ /dev/null
@@ -1,204 +1,0 @@
-#ifndef FTOPTION_H
-#define FTOPTION_H
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled by developers to enable or disable        */
-  /* certain aspects of FreeType.  This file contains macros that apply to */
-  /* all of FreeType.  Driver-specific configurations are placed in each   */
-  /* driver directory (e.g. `freetype/drivers/ttlib/ttconfig.h').          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Alternate Glyph Image Format support                                  */
-  /*                                                                       */
-  /*   By default, the glyph images returned by the FreeType glyph loader  */
-  /*   can either be a pixmap or a vectorial outline defined through       */
-  /*   bezier control points. When defining the following configuration    */
-  /*   macro, some font drivers will be able to register alternate         */
-  /*   glyph image formats.                                                */
-  /*                                                                       */
-  /*   Unset this macro if you're sure that you'll never use a font driver */
-  /*   with an alternate glyph format, this will reduce the size of the    */
-  /*   base layer code.                                                    */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Glyph Postscript Names handling                                       */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. This module is in charge of converting a glyph name string into */
-  /*   a Unicode value, or return a Macintosh standard glyph name for the  */
-  /*   use with the TrueType "post" table.                                 */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the "psnames" compiled in    */
-  /*   your build of FreeType. This has the following effects :            */
-  /*                                                                       */
-  /*   - the TrueType driver will provide its own set of glyph names,      */
-  /*     if you build it to support postscript names in the TrueType       */
-  /*     "post" table.                                                     */
-  /*                                                                       */
-  /*   - the Type 1 driver will not be able to synthetize a                */
-  /*     Unicode charmap out of the glyphs found in the fonts.             */
-  /*                                                                       */
-  /*   You would normally undefine this configuration macro when           */
-  /*   building a version of FreeType that doesn't contain a Type 1        */
-  /*   or CFF driver.                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Postscript Names to Unicode Values support                            */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. Among other things, the module is used to convert a glyph       */
-  /*   name into a unicode value. This is especially useful in order to    */
-  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */
-  /*   through a big table named the "Adobe Glyph List".                   */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the Adobe Glyph List         */
-  /*   compiled in your "psnames" module. The Type 1 driver will not       */
-  /*   be able to synthetize a Unicode charmap out of the glyphs found     */
-  /*   in the fonts..                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI `long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro here.  Note however     */
-  /* that we did not experience any improvement in speed with gcc, and     */
-  /* that the final code seems bigger when linked.                         */
-  /*                                                                       */
-#undef FTCALC_USE_LONG_LONG
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* When compiling FreeType as a DLL, some systems/compilers need a       */
-  /* special keyword in front of each function definition instead of       */
-  /* `extern'.                                                             */
-  /*                                                                       */
-  /* The macros EXPORT_DEF and EXPORT_FUNC are thus used to define         */
-  /* exported library function interfaces and exported library functions   */
-  /* implementations respectively.                                         */
-  /*                                                                       */
-  /* If not defined here, they automatically default to `extern' and void  */
-  /* later in this header file.                                            */
-  /*                                                                       */
-#undef EXPORT_DEF
-#undef EXPORT_FUNC
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Debug level                                                           */
-  /*                                                                       */
-  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
-  /*   errors are reported through the `ftdebug' component.  In trace      */
-  /*   mode, additional messages are sent to the standard output during    */
-  /*   execution.                                                          */
-  /*                                                                       */
-  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
-  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
-  /*                                                                       */
-  /*   Don't define any of these macros to compile in `release' mode.      */
-  /*                                                                       */
-#undef  FT_DEBUG_LEVEL_ERROR
-#undef  FT_DEBUG_LEVEL_TRACE
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Anti-aliasing support                                                 */
-  /*                                                                       */
-  /*   Undefine this macro only if you want to disable the anti-aliasing   */
-  /*   support in FreeType.  This will save you about 5 Kb of code.  It    */
-  /*   may be important for some embedded systems.                         */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ANTI_ALIAS
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Endianess performance improvement                                     */
-  /*                                                                       */
-  /*   FreeType is completely endian-independent, and can thus be compiled */
-  /*   directly on _any_ machine.  However, some components of the library */
-  /*   provide improved routines for the cases where endianess is known.   */
-  /*                                                                       */
-  /*   It usually results in speed-ups and reduced code size.  Note that   */
-  /*   you should not define both of these macros.                         */
-  /*                                                                       */
-  /*                                                                       */
-  /*   NOTE: For now, only the scan-line converter (base/ftraster.c) uses  */
-  /*         these macros to speed-up some anti-alias rendering routines.  */
-  /*                                                                       */
-#undef  FT_CONFIG_OPTION_LITTLE_ENDIAN
-#undef  FT_CONFIG_OPTION_BIG_ENDIAN
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro whenever you want to build a version  */
-  /* of FreeType that does not include a default `system' component.       */
-  /*                                                                       */
-  /* Note that this will prevent the compilation of `ftinit', hence the    */
-  /* function FT_Init_FreeType                                             */
-  /*                                                                       */
-#undef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    The size in bytes of the render pool used by the scan-line         */
-  /*    converter to do all of its work.                                   */
-  /*                                                                       */
-  /*    This must be greater than 4 Kb                                     */
-  /*                                                                       */
-#define FT_RENDER_POOL_SIZE   32768
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_DRIVERS                                                     */
-  /*                                                                       */
-  /*    The maximum number of font drivers that can be registered in a     */
-  /*    single FreeType library object.  8 seems to be a good choice due   */
-  /*    to the relative low actual number of drivers ;-)                   */
-  /*                                                                       */
-#define FT_MAX_DRIVERS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_EXTENSIONS                                                  */
-  /*                                                                       */
-  /*    The maximum number of extensions that can be registered in a       */
-  /*    single font driver. 8 seems to be a good choice for now..          */
-  /*                                                                       */
-#define FT_MAX_EXTENSIONS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_GLYPH_FORMATS                                               */
-  /*                                                                       */
-  /*    The maximum number of glyph image formats that might be registered */
-  /*    in a given library instance. 8 seems to be a good choice due to    */
-  /*    the relatively low number of current formats ;-)                   */
-  /*                                                                       */
-
-#define FT_MAX_GLYPH_FORMATS  8
-
-
-
-#endif /* FTOPTION_H */
--- a/config/os2/ftsys.c
+++ /dev/null
@@ -1,940 +1,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftsys.c                                                                */
-/*                                                                         */
-/*    OS/2-specific system operations (body).                              */
-/*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This implementation of the `ftsys' component uses malloc()/free() for */
-  /* memory management, and the OS/2 DosXXXXX() API functionss for file    */
-  /* access.                                                               */
-  /*                                                                       */
-  /* IMPORTANT NOTE:                                                       */
-  /*                                                                       */
-  /*    Porters, read carefully the comments in ftsys.h before trying to   */
-  /*    port this file to your system.  It contains many essential         */
-  /*    remarks, and will ease your work greatly.                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#include "ftsys.h"
-#include "ftstream.h"
-#include "ftdebug.h"
-
-#include <os2.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-
-  /*************************************************************************/
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the PTRACE() and PERROR() macros, used to print/log      */
-  /* messages during execution.                                            */
-  /*                                                                       */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_io
-
-
-#undef  CUR_SYSTEM  /* just in case */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* To ease porting, we use the macro SYS_STREAM to name the              */
-  /* system-specific stream type.  For example, it is a `FILE*' with the   */
-  /* ANSI libc, it will be a file descriptor, i.e. an integer, when using  */
-  /* the Unix system API, etc.                                             */
-  /*                                                                       */
-#define SYS_STREAM  HFILE
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                      I/O ACCESS AND MANAGEMENT                        */
-  /*                                                                       */
-  /* We only define the `ANSI' resource class in this class.  It is        */
-  /* disk-based and provides a MRU cache in order to only keep the file    */
-  /* descriptors of the 10 most recently used resource files.              */
-  /*                                                                       */
-  /* It simply contains two lists.  One contains the `cached' resources    */
-  /* with a valid FILE* pointer, the second contains all other `flushed'   */
-  /* resource objects.                                                     */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Struct>                                                              */
-  /*    FT_Os2FileRec                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    The FT_Os2File class derives from FT_ResourceRec.                  */
-  /*                                                                       */
-  /* <Fields>                                                              */
-  /*    root      :: The root resource class fields.                       */
-  /*                                                                       */
-  /*    pathname  :: This is a copy of the ANSI file pathname used to open */
-  /*                 streams for the resource.  A different implementation */
-  /*                 is free to use Unicode chars, or file i-node numbers, */
-  /*                 etc.                                                  */
-  /*                                                                       */
-  /*    file_size :: The size in bytes of the resource.  This field should */
-  /*                 be set to -1 until the resource is first opened.      */
-  /*                                                                       */
-  typedef struct  FT_Os2FileRec_
-  {
-    FT_ResourceRec  root;
-    char*           pathname;   /* the font file's pathname           */
-    FT_Long         file_size;  /* file size in bytes                 */
-
-  } FT_Os2FileRec, *FT_Os2File;
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* We use the macro STREAM_Name() as a convenience to return a given     */
-  /* ANSI resource's pathname.  Its `stream' argument is a FT_Resource     */
-  /* which is typecasted to the FT_Os2File class.                          */
-  /*                                                                       */
-#define STREAM_Name( stream )  ((FT_Os2File)stream->resource)->pathname
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* We use the macro STREAM_File() as a convenience to extract the        */
-  /* system-specific stream handle from a given FreeType stream object.    */
-  /*                                                                       */
-#define STREAM_File(stream)  ((HFILE)stream->stream_id.pointer)
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Os2File_Open                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to open a system-stream for a given          */
-  /*    resource.                                                          */
-  /*                                                                       */
-  /*    Note that it must update the target FreeType stream object with    */
-  /*    the system-stream handle and the resource's size.                  */
-  /*                                                                       */
-  /*    Also, the `stream->base' field must be set to NULL for disk-based  */
-  /*    resources, and to the address in memory of the resource's first    */
-  /*    byte for memory-based ones.                                        */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    resource :: The source resource.                                   */
-  /*    stream   :: The target stream object.                              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The stream object IS NOT CREATED by this function, but by its      */
-  /*    caller.                                                            */
-  /*                                                                       */
-  static
-  FT_Error  Os2File_Open( FT_Os2File  resource,
-                          FT_Stream   stream )
-  {
-    HFILE  file;
-    ULONG  ulAction;
-
-
-    /* open the file */
-#ifdef __EMX__
-    if ( DosOpen( (FT_Byte*)resource->pathname,
-                  &file,
-                  &ulAction, 0, 0, OPEN_ACTION_OPEN_IF_EXISTS,
-                  OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY,
-                  NULL ) )
-#else
-    if ( DosOpen( resource->pathname,
-                  &file,
-                  &ulAction, 0, 0, OPEN_ACTION_OPEN_IF_EXISTS,
-                  OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY,
-                  NULL ) )
-#endif  /* __EMX__ */
-    {
-      PERROR(( "Os2File_Open: Could not open file `%s'\n",
-               resource->pathname ));
-      return FT_Err_Cannot_Open_Stream;
-    }
-
-    /* compute file size if necessary */
-    if ( resource->file_size < 0 )
-    {
-      DosSetFilePtr( file, 0, FILE_END, (ULONG*)&resource->file_size );
-      DosSetFilePtr( file, 0, FILE_BEGIN, &ulAction );
-    }
-
-    stream->resource          = (FT_Resource)resource;
-    stream->stream_id.pointer = (void*)file;
-    stream->size              = resource->file_size;
-
-    /* it's a disk-based resource, we don't need to use the "base" and   */
-    /* "cursor" fields of the stream objects                             */
-    stream->base              = NULL;
-    stream->cursor            = NULL;
-
-    PTRACE1(( "Os2File_Open: Opened `%s' (%d bytes) successfully\n",
-              resource->pathname, resource->file_size ));
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Os2File_Close                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Closes a given stream.                                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: The target stream object.                                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  static
-  FT_Error  Os2File_Close( FT_Stream  stream )
-  {
-    PTRACE1(( "OS2File_Close: Closing file `%s'\n", STREAM_Name( stream ) ));
-
-    DosClose( STREAM_File( stream ) );
-
-    stream->resource          = NULL;
-    stream->stream_id.pointer = NULL;
-    stream->size              = 0;
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Os2File_Seek                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Seeks a stream to a given position.                                */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream   :: The target stream object.                              */
-  /*    position :: The offset in bytes from the start of the              */
-  /*                resource/stream.                                       */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `seek' method is never called by the stream manager in case    */
-  /*    of a memory-based resource (i.e., when `stream->base' isn't NULL). */
-  /*                                                                       */
-  static
-  FT_Error  Os2File_Seek( FT_Stream  stream,
-                          FT_Long    position )
-  {
-    ULONG  ibActual;
-
-
-    if ( DosSetFilePtr( STREAM_File( stream ), position,
-                        FILE_BEGIN, &ibActual ) )
-    {
-      PERROR(( "Os2File_Seek: FAILED! Pos. %ld of `%s'\n",
-               position, STREAM_Name( stream ) ));
-
-      return FT_Err_Invalid_Stream_Seek;
-    }
-
-    PTRACE2(( "Os2File_Seek: Pos. %ld of `%s'\n",
-              position, STREAM_Name( stream ) ));
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Os2File_Skip                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Skips a given number of bytes in an OS/2 stream.  Useful to skip   */
-  /*    pad bytes, for example.                                            */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream :: The target stream object.                                */
-  /*    count  :: The number of bytes to skip in the stream.               */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `skip' method is never called by the stream manager in case    */
-  /*    of a memory-based resource (i.e., when `stream->base' isn't NULL). */
-  /*                                                                       */
-  static
-  FT_Error  Os2File_Skip( FT_Stream  stream,
-                          FT_Long    count )
-  {
-    ULONG  ibActual;
-
-
-    DosSetFilePtr( STREAM_File( stream ), 0, FILE_CURRENT, &ibActual );
-    return Os2File_Seek( stream, ibActual + count );
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Os2File_Pos                                                        */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Returns the current offset within an OS/2 stream's resource.       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream   :: The target stream object.                              */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    position :: The current offset.  -1 in case of error.              */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    The `pos' method is never called by the stream manager in case     */
-  /*    of a memory-based resource (i.e., when `stream->base' isn't NULL). */
-  /*                                                                       */
-  static
-  FT_Error  Os2File_Pos( FT_Stream  stream,
-                         FT_Long*   position )
-  {
-    ULONG  ibActual;
-
-
-    if ( DosSetFilePtr( STREAM_File( stream ), 0, FILE_CURRENT, &ibActual ) )
-    {
-      PTRACE2(( "Os2File_Pos: FAILED! in `%s'\n", STREAM_Name( stream ) ));
-      return FT_Err_Invalid_Stream_Seek;
-    }
-
-    *position = ibActual;
-
-    PTRACE2(( "Os2File_Pos: For `%s'\n", STREAM_Name( stream ) ));
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    Os2File_Read                                                       */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reads a given number of bytes from an OS/2 stream into memory.     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    stream     :: The target stream object.                            */
-  /*    buffer     :: The target read buffer where data is copied.         */
-  /*    size       :: The number of bytes to read from the stream.         */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    read_bytes :: The number of bytes effectively read from the        */
-  /*                  stream.  Used in case of error                       */
-  /*                  (i.e. FT_Err_Invalid_Stream_Read) by some parts of   */
-  /*                  the library.                                         */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*   It MUST return the error FT_Err_Invalid_Stream_Read in case of      */
-  /*   an over-read (i.e., reading more bytes from the stream that what    */
-  /*   is left), as the stream component checks for this specific value.   */
-  /*                                                                       */
-  /*   The `read' method is never called by the stream manager in case     */
-  /*   of a memory-based resource (i.e., when `stream->base' isn't NULL).  */
-  /*                                                                       */
-  static
-  FT_Error  Os2File_Read( FT_Stream  stream,
-                          char*      buffer,
-                          FT_Long    size,
-                          FT_Long*   read_bytes )
-  {
-    ULONG  cbActual;
-
-
-    DosRead( STREAM_File( stream ), buffer, size, &cbActual );
-
-    *read_bytes = cbActual;
-
-    if ( cbActual != (ULONG)size )
-    {
-      /* Note : we can have an over-read here when called by the */
-      /*        function FT_Access_Compressed_Frame. This means  */
-      /*        that the following message should be a trace,    */
-      /*        rather than an error for disk-based resources..  */
-      /*                                                         */
-      /*        the function must set the value of 'read_bytes'  */
-      /*        even if it returns an error code..               */
-      PTRACE2(( "Os2File_Read: FAILED!  Read %ld bytes from '%s'\n",
-               size, STREAM_Name( stream ) ));
-
-      return FT_Err_Invalid_Stream_Read;
-    }
-
-    PTRACE2(( "Os2File_Read: Read %ld bytes to buffer 0x%08lx from `%s'\n",
-              size, (long)buffer, STREAM_Name( stream ) ));
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* The following table is the `virtual method table' for the `OS/2       */
-  /* resource class', which methods are defined above.  Its address is set */
-  /* in the `interface' field of all resource objects created by the       */
-  /* function FT_Create_Os2File() (see below).                             */
-  /*                                                                       */
-  static
-  FTRes_InterfaceRec  FT_Os2File_Interface =
-  {
-    (FTRes_Open_Func)        Os2File_Open,
-    (FTRes_Close_Func)       Os2File_Close,
-    (FTRes_Seek_Func)        Os2File_Seek,
-    (FTRes_Skip_Func)        Os2File_Skip,
-    (FTRes_Pos_Func)         Os2File_Pos,
-    (FTRes_Read_Func)        Os2File_Read,
-  };
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Create_Resource                                                 */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Creates a new resource object.  This function is called by the     */
-  /*    FT_New_Resource() function of the base layer.                      */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    library   :: The input library object.                             */
-  /*    pathname  :: The file's pathname as an ASCII string.               */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    aresource :: A handle to new resource object.                      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    Error code.  0 means success.                                      */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This functions does not open a stream.  It simply copies the       */
-  /*    pathname within a fresh new resource object.                       */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_Create_Resource( FT_Library    library,
-                                const char*   pathname,
-                                FT_Resource*  aresource )
-  {
-    FT_Int      len;
-    FT_Os2File  resource;
-    FT_Error    error;
-    FT_System   system;
-
-
-    if ( !library )
-      return FT_Err_Invalid_Library_Handle;
-
-    system = library->system;
-
-    if ( !pathname )
-      goto Fail_Null;
-
-    len = strlen( pathname );
-    if ( len == 0 )
-      goto Fail_Null;
-
-    resource = NULL;
-
-    if ( ALLOC( resource, sizeof ( *resource ) ) ||
-         ALLOC( resource->pathname, len + 1 )    )
-      goto Fail_Memory;
-
-    resource->root.library   = library;
-    resource->root.interface = &FT_Os2File_Interface;
-    resource->root.flags     = FT_RESOURCE_TYPE_DISK_BASED;
-    resource->file_size      = -1;
-    strcpy( resource->pathname, pathname );
-
-    PTRACE1(( "Create_Os2File: OS/2 resource created for '%s'\n",
-              pathname ));
-
-    *aresource = (FT_Resource)resource;
-    return FT_Err_Ok;
-
-  Fail_Null:
-    PERROR(( "Create_Os2File: Null pathname!\n" ));
-    return FT_Err_Invalid_Argument;
-
-  Fail_Memory:
-    if ( resource )
-      FREE( resource->pathname );
-    FREE( resource );
-    PERROR(( "Create_Os2File: Not enough memory to create resource!\n" ));
-    return error;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Destroy_Resource                                                */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Discards a given resource object explicitly.                       */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    resource :: The OS/2 resource object.                              */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    This function does not check whether runs or streams are opened    */
-  /*    for the resource (for now, we assume developer intelligence.       */
-  /*    We'll most probably lower our standard later to ease debugging :-) */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_Destroy_Resource( FT_Resource  resource )
-  {
-    FT_System   system = resource->library->system;
-    FT_Os2File  ansi   = (FT_Os2File)resource;
-
-    if ( !ansi || ansi->root.interface != &FT_Os2File_Interface )
-    {
-      PERROR((
-        "Destroy_Os2File: Trying to destroy an invalid resource!\n" ));
-      return FT_Err_Invalid_Resource_Handle;
-    }
-
-    PTRACE1(( "Destroy_Os2File: Destroying resource for `%s'\n",
-              ansi->pathname ));
-
-    FREE( ansi->pathname );
-    FREE( ansi );
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                          MEMORY MANAGEMENT                            */
-  /*                                                                       */
-  /*                                                                       */
-  /*  This part copies the old FreeType 1.0 and 1.1 memory management      */
-  /*  scheme that was defined in the file `ttmemory.h'.  One can see that  */
-  /*                                                                       */
-  /*  - a set of macros is defined for the memory operations used by the   */
-  /*    engine (MEM_Copy(), MEM_Move(), MEM_Set()).  This comes from the   */
-  /*    fact that many compilers are able to inline these operations       */
-  /*    directly within the compiled code, rather than generating a call   */
-  /*    to the C library.  However, this obliges us to include the         */
-  /*    `<string.h>' header file.                                          */
-  /*                                                                       */
-  /*    If you provide your own memory operations, you can get rid of the  */
-  /*    `#include <string.h>' below.                                       */
-  /*                                                                       */
-  /*                                                                       */
-  /*  - the FT_Alloc() function has several essential properties that MUST */
-  /*    be retained by each port:                                          */
-  /*                                                                       */
-  /*    - It returns an error code, NOT the allocated block's base         */
-  /*      address.                                                         */
-  /*                                                                       */
-  /*    - It takes the address of a target pointer, where the block's base */
-  /*      address will be set.  If the size is zero, its value will be     */
-  /*      NULL, and the function returns successfully.                     */
-  /*                                                                       */
-  /*    - In case of error, the pointer's value is set to NULL and an      */
-  /*      error code is returned.                                          */
-  /*                                                                       */
-  /*    - The new allocated block MUST be zero-filled.  This is a strong   */
-  /*      convention the rest of the engine relies on.                     */
-  /*                                                                       */
-  /*                                                                       */
-  /*  - the FT_Free() function has also its essentials:                    */
-  /*                                                                       */
-  /*    - It takes the address of a pointer which value is the block's     */
-  /*      base address.  This is UNLIKE a standard `free()' which takes    */
-  /*      the block's base directly.                                       */
-  /*                                                                       */
-  /*    - It accepts successfully the address of a pointer which value is  */
-  /*      NULL, in which case it simply returns.                           */
-  /*                                                                       */
-  /*    - The pointer is always set to NULL by the function.               */
-  /*                                                                       */
-  /*                                                                       */
-  /*  - The MEM_Alloc(), ALLOC(), and ALLOC_ARRAY() macros are used by the */
-  /*    library and should NOT be modified by porters!                     */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the PTRACE() and PERROR() macros, used to print/log      */
-  /* messages during execution.                                            */
-  /*                                                                       */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_memory
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Alloc                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Allocates a new block of memory.  The returned area is always      */
-  /*    zero-filled, this is a strong convention in many FreeType parts.   */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object' where allocation     */
-  /*              occurs.                                                  */
-  /*                                                                       */
-  /*    size   :: The size in bytes of the block to allocate.              */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    P      :: A pointer to the fresh new block.  It should be set to   */
-  /*              NULL if `size' is 0, or in case of error.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  BASE_FUNC
-  FT_Error  FT_Alloc( FT_System  system,
-                      FT_Long    size,
-                      void**     P )
-  {
-    if ( !P )
-    {
-      PERROR(( "FT_Alloc: Invalid pointer address!\n" ));
-      return FT_Err_Invalid_Argument;
-    }
-
-    if ( size > 0 )
-    {
-      *P = malloc( size );
-      if ( !*P )
-      {
-        PERROR(( "FT_Alloc: Out of memory (%ld bytes requested)!\n",
-                 size ));
-
-        return FT_Err_Out_Of_Memory;
-      }
-
-      system->total_alloc += size;
-
-      /* ALWAYS ZERO-FILL THE BLOCK! */
-      MEM_Set( *P, 0, size );
-    }
-    else
-      *P = NULL;
-
-    PTRACE2(( "FT_Alloc: Size = %ld, pointer = 0x%08lx, block = 0x%08lx\n",
-              size, (long)P, (long)*P ));
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Realloc                                                         */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Reallocates a block of memory pointed to by `*P' to `Size' bytes   */
-  /*    from the heap, possibly changing `*P'.                             */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object' where allocation     */
-  /*              occurs.                                                  */
-  /*                                                                       */
-  /*    size   :: The size in bytes of the block to allocate.              */
-  /*                                                                       */
-  /* <InOut>                                                               */
-  /*    P      :: A pointer to the fresh new block.  It should be set to   */
-  /*              NULL if `size' is 0, or in case of error.                */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  BASE_FUNC
-  FT_Error  FT_Realloc( FT_System  system,
-                        FT_Long    size,
-                        void**     P )
-  {
-    void*  Q;
-
-
-    if ( !P )
-    {
-      PERROR(( "FT_Realloc: Invalid pointer address!\n" ));
-      return FT_Err_Invalid_Argument;
-    }
-
-    /* if the original pointer is NULL, call FT_Alloc() */
-    if ( !*P )
-      return FT_Alloc( system, size, P );
-
-    /* if the new block if zero-sized, clear the current one */
-    if ( size <= 0 )
-      return FT_Free( system, P );
-
-    Q = (void*)realloc( *P, size );
-    if ( !Q )
-    {
-      PERROR(( "FT_Realloc: Reallocation failed!\n" ));
-      return FT_Err_Out_Of_Memory;
-    }
-
-    *P = Q;
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Free                                                            */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Releases a given block of memory allocated through FT_Alloc().     */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object' where allocation     */
-  /*              occured.                                                 */
-  /*                                                                       */
-  /*    P      :: This is the _address_ of a _pointer_ which points to the */
-  /*              allocated block.  It is always set to NULL on exit.      */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  /* <Note>                                                                */
-  /*    If P or *P are NULL, this function should return successfully.     */
-  /*    This is a strong convention within all of FreeType and its         */
-  /*    drivers.                                                           */
-  /*                                                                       */
-  BASE_FUNC
-  FT_Error  FT_Free( FT_System  system,
-                     void*     *P )
-  {
-    UNUSED( system );
-
-    PTRACE2(( "FT_Free: Freeing pointer 0x%08lx (block 0x%08lx)\n",
-              (long)P, (P ? (long)*P : -1) ));
-
-    if ( !P || !*P )
-      return FT_Err_Ok;
-
-    free( *P );
-    *P = NULL;
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                       SYNCHRONIZATION MANAGEMENT                      */
-  /*                                                                       */
-  /*                                                                       */
-  /*   This section deals with mutexes.  The library can be compiled to    */
-  /*   two distinct thread support levels (namely single threaded and      */
-  /*   re-entrant modes).                                                  */
-  /*                                                                       */
-  /*   It protects its variables through the MUTEX_Lock() and              */
-  /*   MUTEX_Release() macros which are void in single threaded mode.      */
-  /*                                                                       */
-  /*   It defines a typeless mutex reference type, `FT_Mutex', that you're */
-  /*   free to redefine for your system's needs.                           */
-  /*                                                                       */
-  /*   The default implementation of ftsys.c contains only dummy functions */
-  /*   which always return successfully.  You NEED to specialize them in   */
-  /*   order to port ftsys.c to any multi-threaded environment.            */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* The macro FT_COMPONENT is used in trace mode.  It is an implicit      */
-  /* parameter of the PTRACE() and PERROR() macros, used to print/log      */
-  /* messages during execution.                                            */
-  /*                                                                       */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_sync
-
-
-#ifdef FT_CONFIG_THREADS
-
-  BASE_FUNC
-  FT_Error  FT_Mutex_Create( FT_System  system,
-                             TMutex*    mutex )
-  {
-    UNUSED( system );
-
-    mutex = (void*)-1;
-    system->num_mutexes++;
-
-    /* Insert your own mutex creation code here */
-
-    return FT_Err_Ok;
-  }
-
-
-  BASE_FUNC
-  void  FT_Mutex_Delete( FT_System  system,
-                         TMutex*    mutex )
-  {
-    UNUSED( system );
-
-    mutex = (void*)0;
-    system->num_mutexes--;
-
-    /* Insert your own mutex destruction code here */
-  }
-
-
-  BASE_FUNC
-  void  FT_Mutex_Lock( FT_System  system,
-                       TMutex*    mutex )
-  {
-    /* NOTE: It is legal to call this function with a NULL argument */
-    /*       in which case an immediate return is appropriate.      */
-
-    UNUSED( system );
-
-    if ( !mutex )
-      return;
-
-    /* Insert your own mutex locking code here */
-  }
-
-
-  BASE_FUNC
-  void  FT_Mutex_Release( FT_System  system,
-                          TMutex*    mutex )
-  {
-    /* NOTE: It is legal to call this function with a NULL argument */
-    /*       in which case an immediate return is appropriate       */
-
-    UNUSED( system );
-
-    if ( !mutex )
-      return;
-
-    /* Insert your own mutex release code here */
-  }
-
-#endif /* FT_CONFIG_THREADS */
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_New_System                                                      */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    This function is used to create and initialize new system objects. */
-  /*    These are mainly used to let client applications and font servers  */
-  /*    specify their own memory allocators and synchronization            */
-  /*    procedures.                                                        */
-  /*                                                                       */
-  /* <Output>                                                              */
-  /*    system :: A handle to a given `system object'.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_New_System( FT_System*  system )
-  {
-    *system = (FT_System)malloc( sizeof ( **system ) );
-
-    if ( !*system )
-      return FT_Err_Out_Of_Memory;
-
-    /* initialize memory management */
-
-    (*system)->system_flags = FT_SYSTEM_FLAG_TOTAL_ALLOC |
-                              FT_SYSTEM_FLAG_MUTEXES;
-    (*system)->total_alloc = 0;
-    (*system)->num_mutexes = 0;
-
-    /* initialize i/o management (nothing) */
-
-    /* initialize synchronisation (nothing) */
-
-    /* initialize streams (nothing) */
-
-    return FT_Err_Ok;
-  }
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Function>                                                            */
-  /*    FT_Done_System                                                     */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    Destroys a given FreeType system object.                           */
-  /*                                                                       */
-  /* <Input>                                                               */
-  /*    system :: A handle to a given `system object'.                     */
-  /*                                                                       */
-  /* <Return>                                                              */
-  /*    FreeType error code.  0 means success.                             */
-  /*                                                                       */
-  EXPORT_FUNC
-  FT_Error  FT_Done_System( FT_System  system )
-  {
-    /* finalize synchronization (nothing) */
-
-    /* finalize i/o management (nothing)  */
-
-    /* finalize memory management         */
-
-    free( system );
-
-    return FT_Err_Ok;
-  }
-
-
-/* END */
--- a/config/os2/ftsystem.c
+++ /dev/null
@@ -1,214 +1,0 @@
-/**************************************************************************
- *
- *  ftsystem.h                                                        1.0
- *
- *    ANSI-specific FreeType low-level system interface
- *
- *    This file contains the definition of interface used by FreeType
- *    to access low-level, i.e. memory management, i/o access as well
- *    as thread synchronisation.              
- *
- *
- *  Copyright 1996-1999 by                                                   
- *  David Turner, Robert Wilhelm, and Werner Lemberg                         
- *                                                                           
- *  This file is part of the FreeType project, and may only be used          
- *  modified and distributed under the terms of the FreeType project         
- *  license, LICENSE.TXT.  By continuing to use, modify, or distribute       
- *  this file you indicate that you have read the license and                 
- *  understand and accept it fully.                                          
- *                                                                           
- **************************************************************************/
-
-#include <ftsystem.h>
-#include <fterrors.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                       MEMORY MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Alloc_Func
- *
- * <Description>
- *    The memory allocator function type
- *
- * <Input>
- *    system    :: pointer to the system object
- *    size      :: requested size in bytes
- *
- * <Output>
- *    block     :: address of newly allocated block
- *
- * <Return>  
- *    Error code. 0 means success.
- *
- * <Note>
- *    If your allocation routine ALWAYS zeroes the new block, you
- *    should set the flag FT_SYSTEM_FLAG_ALLOC_ZEROES in your system
- *    object 'flags' field.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_alloc( FT_Memory  memory,
-                   long       size )
-  {
-    (void)memory;
-    return malloc(size);
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Realloc_Func
- *
- * <Description>
- *    The memory reallocator function type
- *
- * <Input>
- *    system   :: pointer to the system object
- *    new_size :: new requested size in bytes
- *
- * <InOut>
- *    block    :: address of block in memory
- *
- * <Return>
- *    Error code. 0 means success.
- *
- * <Note>
- *    This function is _never_ called when the system flag 
- *    FT_SYSTEM_FLAG_NO_REALLOC is set. Instead, the engine will emulate
- *    realloc through "alloc" and "free".
- *
- *    Note that this is possible due to the fact that FreeType's
- *    "FT_Realloc" always requests the _current_ size of the reallocated
- *    block as a parameter, thus avoiding memory leaks.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_realloc( FT_Memory  memory,
-                     long       cur_size,
-                     long       new_size,
-                     void*      block )
-  {
-    (void)memory;
-    (void)cur_size;
-
-    return realloc( block, new_size );
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Free_Func
- *
- * <Description>
- *    The memory release function type
- *
- * <Input>
- *    system  :: pointer to the system object
- *    block   :: address of block in memory
- *
- * <Note>
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void  ft_free( FT_Memory  memory,
-                 void*      block )
-  {
-    (void)memory;
-    free( block );
-  }
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                     RESOURCE MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-
-#define STREAM_FILE(stream)  ((FILE*)stream->descriptor.pointer)
-
-  static
-  void  ft_close_stream( FT_Stream  stream )
-  {
-    fclose( STREAM_FILE(stream) );
-  }
-
-  static
-  unsigned long  ft_io_stream( FT_Stream      stream,
-                               unsigned long  offset,
-                               char*          buffer,
-                               unsigned long  count )
-  {
-    FILE*  file;
-    
-    file = STREAM_FILE(stream);
-
-    fseek( file, offset, SEEK_SET );    
-    return (unsigned long)fread( buffer, 1, count, file );
-  }
-
-
-  extern
-  int  FT_New_Stream( const char*  filepathname,
-                      FT_Stream    stream )
-  {
-    FILE*  file;
-    
-    file = fopen( filepathname, "rb" );
-    if (!file)
-      return FT_Err_Cannot_Open_Resource;
-      
-    fseek( file, 0, SEEK_END );
-    stream->size = ftell(file);
-    fseek( file, 0, SEEK_SET );
-    
-    stream->descriptor.pointer = file;
-    stream->pos                = 0;
-    
-    stream->read  = ft_io_stream;
-    stream->close = ft_close_stream;
-
-    return 0;
-  }
-
-
-  extern
-  FT_Memory  FT_New_Memory( void )
-  {
-    FT_Memory  memory;
-    
-    memory = (FT_Memory)malloc( sizeof(*memory) );
-    if (memory)
-    {
-      memory->user    = 0;
-      memory->alloc   = ft_alloc;
-      memory->realloc = ft_realloc;
-      memory->free    = ft_free;
-    }
-    return memory;
-  }
-
--- a/config/os2/makefile.devel
+++ /dev/null
@@ -1,213 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-DELETE   := del
-SEP      := /
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP)/config/os2
-PLATFORM := os2
-CC       := gcc
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -L
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g -O0 -Wall
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS := -ansi -pedantic
-
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_dos
-distclean_freetype: distclean_freetype_dos
-
-# Librarian to use to build the static library
-#
-FT_LIBRARIAN := $(AR) -r
-
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $@
-	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
-
-
-# Cleaning rules
-#
-DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR))
-
-clean_freetype_objects:
-	-del $(DIR8OBJ)\*.$O
-
-clean_freetype_lib:
-	-del $(FT_LIBRARY)
-
-clean: clean_freetype_objects
-
-
-
-endif
-
-
--- a/config/os2/makefile.gcc
+++ /dev/null
@@ -1,196 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-DELETE   := del
-SEP      := /
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP)/config/os2
-PLATFORM := os2
-CC       := gcc
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -L
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g -O0 -Wall
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS := -ansi -pedantic
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_dos
-distclean_freetype: distclean_freetype_dos
-
-
-# Librarian to use to build the static library
-#
-FT_LIBRARIAN := $(AR) -r
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $@
-	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
-
-endif
-
--- /dev/null
+++ b/config/os2/os2-dev.mk
@@ -1,0 +1,156 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for OS/2 + gcc
+#*  THIS VERSION TURNS OFF OPTIMIZATIONS FOR DEBUGGING !!
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := del
+SEP      := /
+HOSTSEP  := $(strip \ )
+BUILD    := $(TOP)/config/os2
+PLATFORM := os2
+CC       := gcc
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g -O0 -Wall
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
+# Librarian to use to build the static library
+#
+FT_LIBRARIAN := $(AR) -r
+
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $@
+	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
+
+
+# Cleaning rules
+#
+DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR))
+
+clean_freetype_objects:
+	-del $(DIR_OBJ)\*.$O
+
+clean_freetype_lib:
+	-del $(subst $(SEP),\,$(FT_LIBRARY))
+
+clean: clean_freetype_objects
+
+
+
+endif
+
+
--- /dev/null
+++ b/config/os2/os2-gcc.mk
@@ -1,0 +1,155 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for OS/2 + gcc
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := del
+SEP      := /
+HOSTSEP  := $(strip \ )
+BUILD    := $(TOP)/config/os2
+PLATFORM := os2
+CC       := gcc
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g -O6 -Wall
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
+# Librarian to use to build the static library
+#
+FT_LIBRARIAN := $(AR) -r
+
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $@
+	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
+
+
+# Cleaning rules
+#
+DIR_OBJ := $(subst $(SEP),\,$(OBJ_DIR))
+
+clean_freetype_objects:
+	-del $(DIR_OBJ)\*.$O
+
+clean_freetype_lib:
+	-del $(subst $(SEP),\,$(FT_LIBRARY))
+
+clean: clean_freetype_objects
+
+
+
+endif
+
+
--- a/config/unix/Makefile
+++ /dev/null
@@ -1,193 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-ifndef TOP
-TOP := .
-endif
-
-DELETE   := rm -f
-SEP      := /
-HOSTSEP  := $(SEP)
-BUILD    := $(TOP)/config/unix
-PLATFORM := unix
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -l
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g -O6 -Wall
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS := -ansi -pedantic
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_std
-distclean_freetype: distclean_freetype_std
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $@
-	$(AR) -r $@ $(OBJECTS_LIST)
-
-endif
--- a/config/unix/Makefile.devel
+++ /dev/null
@@ -1,193 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-ifndef TOP
-TOP := .
-endif
-
-DELETE   := rm -f
-SEP      := /
-HOSTSEP  := $(SEP)
-BUILD    := $(TOP)/config/unix
-PLATFORM := unix
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -l
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g -O0 -Wall
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS := -ansi -pedantic
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_std
-distclean_freetype: distclean_freetype_std
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $@
-	$(AR) -r $@ $(OBJECTS_LIST)
-
-endif
--- a/config/unix/detect.mk
+++ b/config/unix/detect.mk
@@ -20,10 +20,29 @@
 # if `devel' is the requested target, use the development Makefile
 #
 ifneq ($(findstring devel,$(MAKECMDGOALS)),)
-CONFIG_RULES := $(BUILD)$(SEP)Makefile.devel
-devel: ;
+CONFIG_RULES := $(BUILD)$(SEP)unix-dev.mk
+devel: setup;
+endif
+
+# test wether we're using gcc ? If it is, we selected the
+# 'unix-gcc.mk' configuration file. Otherwise, the standard
+# 'unix.mk' which simply calls "cc -c" with no extra arguments
+#
+# Feel free to add support for other platform specific compilers
+# in this directory (e.g. solaris.mk + changes here to detect the
+# platform)
+#
+ifeq ($(CC),gcc)
+is_gcc := 1
 else
-CONFIG_RULES := $(BUILD)$(SEP)Makefile
+ifneq ($(findstring gcc,$(shell $(CC) --version)),)
+is_gcc := 1
+endif
+
+ifdef is_gcc
+CONFIG_RULES := $(BUILD)$(SEP)unix-gcc.mk
+else
+CONFIG_RULES := $(BUILD)$(SEP)unix.mk
 endif
 
 setup: std_setup
--- a/config/unix/ftconfig.h
+++ /dev/null
@@ -1,172 +1,0 @@
-/*******************************************************************
- *
- *  ftconfig.h
- *
- *    Unix-specific configuration file
- *
- *  Copyright 1996-1998 by
- *  David Turner, Robert Wilhelm, and Werner Lemberg.
- *
- *  This file is part of the FreeType project, and may only be used
- *  modified and distributed under the terms of the FreeType project
- *  license, LICENSE.TXT.  By continuing to use, modify, or distribute 
- *  this file you indicate that you have read the license and
- *  understand and accept it fully.
- *
- *
- *  This header file contains a number of macro definitions that are
- *  used by the rest of the engine. Porters are free to copy this file
- *  and adapt it to suit their own system..
- *
- *  IMPORTANT NOTE :
- *
- *    Porters, read carefully the comments in ftsys.h before trying
- *    to port this file to your system. It contains many essential
- *    remarks, and will ease your work greatly..
- *
- ******************************************************************/
-
-#ifndef FTCONFIG_H
-#define FTCONFIG_H
-
-/*************************************************************************/
-/*                                                                       */
-/*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
-/*                                                                       */
-/*  These macros can be toggled to suit a specific system. The current   */
-/*  ones are defaults used to compile FreeType in a 32-bits ANSI C       */
-/*  environment. Copy this file to your own "freetype/arch/<system>"     */
-/*  directory, and edit it to port the engine..                          */
-/*                                                                       */
-/*************************************************************************/
-
-/* Define to empty if the keyword does not work.  */
-/* #undef const */
-
-/* Define if you have a working `mmap' system call.  */
-#define  HAVE_MMAP
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* Define if your processor stores words with the most significant
-   byte first (like Motorola and SPARC, unlike Intel and VAX).  */
-/* #undef WORDS_BIGENDIAN */
-
-/* Define if the X Window System is missing or not being used.  */
-/* #undef X_DISPLAY_MISSING */
-
-/* The number of bytes in a int.  */
-#define SIZEOF_INT 4
-
-/* The number of bytes in a long.  */
-#define SIZEOF_LONG 4
-
-/* Define if you have the getpagesize function.  */
-#define HAVE_GETPAGESIZE 1
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 1
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 1
-
-/* Define if you have the <locale.h> header file.  */
-#define HAVE_LOCALE_H 1
-
-/* Define if you have the <libintl.h> header file.  */
-#undef  HAVE_LIBINTL_H  
-
-/* Define if you have the libintl library.  */
-/* #undef HAVE_LIBINTL */
-
-/* Preferred alignment of data */
-#define  FT_ALIGNMENT  8
-
-/* See the definition of the macro FT_CONFIG_OPTION_LITTLE_ENDIAN */
-/* and FT_CONFIG_OPTION_BIG_ENDIAN below, they may need to be set */
-/* according to the platform too..                                */
-
-
-#include <ftoption.h>
-
-/*************************************************************************/
-/*                                                                       */
-/*                       AUTOMATIC CONFIGURATION MACROS                  */
-/*                                                                       */
-/*  These macros are computed from the ones defined above. Don't touch   */
-/*  their definition, unless you know precisely what you're doing. No    */
-/*  porter should need to mess with them.                                */
-/*                                                                       */
-/*************************************************************************/
-
-  /* IntN types:                                                        */
-  /*                                                                    */
-  /*   Used to guarantee the size of some specific integers.            */
-  /*                                                                    */
-
-  typedef signed short    FT_Int16;
-  typedef unsigned short  FT_Word16;
-
-#if SIZEOF_INT == 4
-
-  typedef signed int      FT_Int32;
-  typedef unsigned int    FT_Word32;
-
-#elif SIZEOF_LONG == 4
-
-  typedef signed long     FT_Int32;
-  typedef unsigned long   FT_Word32;
-
-#else
-#error "no 32bit type found - please check your configuration files"
-#endif
-
-#if SIZEOF_LONG == 8
-
-/* LONG64 must be defined when a 64-bit type is available */
-#define LONG64
-#define INT64   long
-
-#else
-
-/* GCC provides the non-ANSI 'long long' 64-bit type.  You can activate it */
-/* by defining the FTCALC_USE_LONG_LONG macro in 'ftconfig.h'.  Note that  */
-/* this will produce many -ansi warnings during library compilation.       */
-#ifdef FTCALC_USE_LONG_LONG
-
-#define LONG64
-#define INT64   long long
-
-#endif /* FTCALC_USE_LONG_LONG */
-#endif
-
-#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-#define  LOCAL_DEF   static
-#define  LOCAL_FUNC  static
-#else
-#define  LOCAL_DEF   extern
-#define  LOCAL_FUNC  /* nothing */
-#endif
-
-#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
-#define  BASE_DEF    LOCAL_DEF
-#define  BASE_FUNC   LOCAL_FUNC
-#else
-#define  BASE_DEF    extern
-#define  BASE_FUNC   /* nothing */
-#endif
-
-#ifndef  EXPORT_DEF
-#define  EXPORT_DEF   extern
-#endif
-
-#ifndef  EXPORT_FUNC
-#define  EXPORT_FUNC  /* nothing */
-#endif
-
-
-#endif /* FTCONFIG_H */
--- a/config/unix/ftmodule.h
+++ /dev/null
@@ -1,4 +1,0 @@
-FT_DRIVER(sfnt_driver_interface)
-FT_DRIVER(tt_driver_interface)
-FT_DRIVER(t1_driver_interface)
-FT_DRIVER(psnames_driver_interface)
--- a/config/unix/ftoption.h
+++ /dev/null
@@ -1,204 +1,0 @@
-#ifndef FTOPTION_H
-#define FTOPTION_H
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled by developers to enable or disable        */
-  /* certain aspects of FreeType.  This file contains macros that apply to */
-  /* all of FreeType.  Driver-specific configurations are placed in each   */
-  /* driver directory (e.g. `freetype/drivers/ttlib/ttconfig.h').          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Alternate Glyph Image Format support                                  */
-  /*                                                                       */
-  /*   By default, the glyph images returned by the FreeType glyph loader  */
-  /*   can either be a pixmap or a vectorial outline defined through       */
-  /*   bezier control points. When defining the following configuration    */
-  /*   macro, some font drivers will be able to register alternate         */
-  /*   glyph image formats.                                                */
-  /*                                                                       */
-  /*   Unset this macro if you're sure that you'll never use a font driver */
-  /*   with an alternate glyph format, this will reduce the size of the    */
-  /*   base layer code.                                                    */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Glyph Postscript Names handling                                       */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. This module is in charge of converting a glyph name string into */
-  /*   a Unicode value, or return a Macintosh standard glyph name for the  */
-  /*   use with the TrueType "post" table.                                 */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the "psnames" compiled in    */
-  /*   your build of FreeType. This has the following effects :            */
-  /*                                                                       */
-  /*   - the TrueType driver will provide its own set of glyph names,      */
-  /*     if you build it to support postscript names in the TrueType       */
-  /*     "post" table.                                                     */
-  /*                                                                       */
-  /*   - the Type 1 driver will not be able to synthetize a                */
-  /*     Unicode charmap out of the glyphs found in the fonts.             */
-  /*                                                                       */
-  /*   You would normally undefine this configuration macro when           */
-  /*   building a version of FreeType that doesn't contain a Type 1        */
-  /*   or CFF driver.                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Postscript Names to Unicode Values support                            */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. Among other things, the module is used to convert a glyph       */
-  /*   name into a unicode value. This is especially useful in order to    */
-  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */
-  /*   through a big table named the "Adobe Glyph List".                   */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the Adobe Glyph List         */
-  /*   compiled in your "psnames" module. The Type 1 driver will not       */
-  /*   be able to synthetize a Unicode charmap out of the glyphs found     */
-  /*   in the fonts..                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI `long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro here.  Note however     */
-  /* that we did not experience any improvement in speed with gcc, and     */
-  /* that the final code seems bigger when linked.                         */
-  /*                                                                       */
-#undef FTCALC_USE_LONG_LONG
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* When compiling FreeType as a DLL, some systems/compilers need a       */
-  /* special keyword in front of each function definition instead of       */
-  /* `extern'.                                                             */
-  /*                                                                       */
-  /* The macros EXPORT_DEF and EXPORT_FUNC are thus used to define         */
-  /* exported library function interfaces and exported library functions   */
-  /* implementations respectively.                                         */
-  /*                                                                       */
-  /* If not defined here, they automatically default to `extern' and void  */
-  /* later in this header file.                                            */
-  /*                                                                       */
-#undef EXPORT_DEF
-#undef EXPORT_FUNC
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Debug level                                                           */
-  /*                                                                       */
-  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
-  /*   errors are reported through the `ftdebug' component.  In trace      */
-  /*   mode, additional messages are sent to the standard output during    */
-  /*   execution.                                                          */
-  /*                                                                       */
-  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
-  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
-  /*                                                                       */
-  /*   Don't define any of these macros to compile in `release' mode.      */
-  /*                                                                       */
-#undef  FT_DEBUG_LEVEL_ERROR
-#undef  FT_DEBUG_LEVEL_TRACE
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Anti-aliasing support                                                 */
-  /*                                                                       */
-  /*   Undefine this macro only if you want to disable the anti-aliasing   */
-  /*   support in FreeType.  This will save you about 5 Kb of code.  It    */
-  /*   may be important for some embedded systems.                         */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ANTI_ALIAS
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Endianess performance improvement                                     */
-  /*                                                                       */
-  /*   FreeType is completely endian-independent, and can thus be compiled */
-  /*   directly on _any_ machine.  However, some components of the library */
-  /*   provide improved routines for the cases where endianess is known.   */
-  /*                                                                       */
-  /*   It usually results in speed-ups and reduced code size.  Note that   */
-  /*   you should not define both of these macros.                         */
-  /*                                                                       */
-  /*                                                                       */
-  /*   NOTE: For now, only the scan-line converter (base/ftraster.c) uses  */
-  /*         these macros to speed-up some anti-alias rendering routines.  */
-  /*                                                                       */
-#undef  FT_CONFIG_OPTION_LITTLE_ENDIAN
-#undef  FT_CONFIG_OPTION_BIG_ENDIAN
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro whenever you want to build a version  */
-  /* of FreeType that does not include a default `system' component.       */
-  /*                                                                       */
-  /* Note that this will prevent the compilation of `ftinit', hence the    */
-  /* function FT_Init_FreeType                                             */
-  /*                                                                       */
-#undef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    The size in bytes of the render pool used by the scan-line         */
-  /*    converter to do all of its work.                                   */
-  /*                                                                       */
-  /*    This must be greater than 4 Kb                                     */
-  /*                                                                       */
-#define FT_RENDER_POOL_SIZE   32768
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_DRIVERS                                                     */
-  /*                                                                       */
-  /*    The maximum number of font drivers that can be registered in a     */
-  /*    single FreeType library object.  8 seems to be a good choice due   */
-  /*    to the relative low actual number of drivers ;-)                   */
-  /*                                                                       */
-#define FT_MAX_DRIVERS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_EXTENSIONS                                                  */
-  /*                                                                       */
-  /*    The maximum number of extensions that can be registered in a       */
-  /*    single font driver. 8 seems to be a good choice for now..          */
-  /*                                                                       */
-#define FT_MAX_EXTENSIONS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_GLYPH_FORMATS                                               */
-  /*                                                                       */
-  /*    The maximum number of glyph image formats that might be registered */
-  /*    in a given library instance. 8 seems to be a good choice due to    */
-  /*    the relatively low number of current formats ;-)                   */
-  /*                                                                       */
-
-#define FT_MAX_GLYPH_FORMATS  8
-
-
-
-#endif /* FTOPTION_H */
--- a/config/unix/ftsys.c
+++ /dev/null
@@ -1,871 +1,0 @@
-/*******************************************************************
- *
- *  ftsys.c
- *
- *    Unix-specific system operations.
- *
- *  Copyright 1996-1998 by
- *  David Turner, Robert Wilhelm, and Werner Lemberg.
- *
- *  This file is part of the FreeType project, and may only be used
- *  modified and distributed under the terms of the FreeType project
- *  license, LICENSE.TXT.  By continuing to use, modify, or distribute 
- *  this file you indicate that you have read the license and
- *  understand and accept it fully.
- *
- *
- *  This implementation of the 'ftsys' component uses memory-mapped
- *  files, as well as the ANSI malloc/free functions..
- *
- *  IMPORTANT NOTE :
- *
- *    Porters, read carefully the comments in ftsys.h before trying
- *    to port this file to your system. It contains many essential
- *    remarks, and will ease your work greatly..
- *
- ******************************************************************/
-
-#include "ftsys.h"
-#include "ftobjs.h"
-#include "ftstream.h"
-#include "ftdebug.h"
-
-/* Memory-mapping includes and definitions..                            */
-/*                                                                      */
-#ifdef HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-
-#include <sys/mman.h>
-#ifndef MAP_FILE
-#define MAP_FILE  0x00
-#endif
-
-/*
- * The prototype for munmap() is not provided on SunOS.  This needs to
- * have a check added later to see if the GNU C library is being used.
- * If so, then this prototype is not needed.
- */
-#if defined(__sun__) && !defined(SVR4) && !defined(__SVR4)
-  extern int  munmap( caddr_t  addr, int  len );
-#endif
-
-#include <sys/stat.h>
-#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
-
-/* The macro FT_COMPONENT is used in trace mode. It is an implicit */
-/* parameter of the PTRACE and PERROR macros, used to print/log    */
-/* messages during execution..                                     */
-/*                                                                 */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_io
-
-
-
-
-/* To ease porting, we use the macro SYS_STREAM to name the system-specific */
-/* stream type. For example, it is a "FILE*" with the ANSI libc, it will be */
-/* a file descriptor, i.e. an integer, when using the Unix system api, etc. */
- 
-/* we identify each memory-mapped file through its address in memory */
-/* hence the following macro definition..                            */
- 
-#define  SYS_STREAM  void*
-
-
-/**************************************************************************/
-/*                                                                        */
-/*                      I/O ACCESS AND MANAGEMENT                         */
-/*                                                                        */
-/*  We only define the "ANSI" resource class in this class. It is         */
-/*  disk-based, and provides a MRU cache, in order to only keep the file  */
-/*  descriptors of the 10 most recently used resource files.              */
-/*                                                                        */
-/*  it simply contains two lists. One contains the "cached" resources     */
-/*  with a valid FILE* pointer, the second contains all other "flushed"   */
-/*  resource objects.                                                     */
-/*                                                                        */
-
-/* The FT_MMapFile class derives from FT_ResourceRec - description :   */
-/*                                                                     */
-/* <Struct> FT_AnsiFileRec                                             */
-/*                                                                     */
-/* <Fields>                                                            */
-/*                                                                     */
-/* root ::                                                             */
-/*    the root resource class fields.                                  */
-/*                                                                     */
-/* pathname ::                                                         */
-/*    the file's pathname. Needed because we open and close font       */
-/*    resources dynamically in order to limit the number of            */
-/*    concurrently active mappings (this saves kernel resources).      */
-/*                                                                     */
-/* file_size ::                                                        */
-/*    the size in bytes of the resource. This field should be set to   */
-/*    -1 until the resource is first opened..                          */
-/*                                                                     */
-
-#include <stdio.h>
-
-  typedef struct FT_MMapFileRec_
-  {
-    FT_ResourceRec  root;
-    const char*     pathname;
-    FT_Long         file_size;  /* file size in bytes */
-    
-  } FT_MMapFileRec, *FT_MMapFile;
-
-
-/* We use the macro STREAM_Name as a convenience to return a given  */
-/* ANSI resource's pathname. Its "stream" argument is a FT_Resource */
-/* which is typecasted to the FT_AnsiFile class                     */
-#define STREAM_Name(stream)  ((FT_MMapFile)stream->resource)->pathname
-
-/* We use the macro STREAM_File as a convenience to extract the      */
-/* system-specific stream handle from a given FreeType stream object */
-#define STREAM_File(stream)  ((void*)stream->stream_id.pointer)
-
-
-
-/***************************************************************************/
-/*                                                                         */
-/* <Function> MMapFile_Open                                                */
-/*                                                                         */
-/* <Description>                                                           */
-/*    This function is used to open a system-stream for a given resource.  */
-/*                                                                         */
-/*    Note that it must update the target FreeType stream object with the  */
-/*    system-stream handle and the resource's size.                        */
-/*                                                                         */
-/*    Also, the 'stream->base' field must be set to NULL for disk-based    */
-/*    resource, and to the address in memory of the resource's first byte  */
-/*    for a memory-based one.                                              */
-/*                                                                         */
-/* <Input>                                                                 */
-/*   resource :: the source resource                                       */
-/*   stream   :: the target stream object                                  */
-/*                                                                         */
-/* <Return>                                                                */
-/*   Error code                                                            */
-/*                                                                         */
-/* <Note>                                                                  */
-/*   This function simply opens and maps the resource's file pathname      */
-/*                                                                         */
-/*   The stream object IS NOT CREATED by this function, but by its caller. */
-/*                                                                         */
-/***************************************************************************/
-
-  static
-  FT_Error  MMapFile_Open( FT_MMapFile  resource,
-                           FT_Stream    stream )
-  {
-    int          file;
-    struct stat  stat_buf;
-    
-    /* open the file */
-    file = open( resource->pathname, O_RDONLY );
-    if (file < 0)
-    {
-      PERROR(( "UnixSys.MMapFile_Open : could not open '%s'\n",
-               resource->pathname ));
-      return FT_Err_Cannot_Open_Stream;
-    }
-
-    if (fstat( file, &stat_buf ) < 0)
-    {
-      PERROR(( "UnixSys.MMapFile_Open : could not 'fstat' file '%s'\n",
-               resource->pathname ));
-      goto Fail_Map;
-    }
-      
-    if ( resource->file_size < 0 )
-      resource->file_size = stat_buf.st_size;
-      
-    stream->resource          = (FT_Resource)resource;
-    stream->system            = resource->root.driver->system;
-    stream->size              = resource->file_size;
-    stream->stream_id.pointer = mmap( NULL,
-                                      resource->file_size,
-                                      PROT_READ,
-                                      MAP_FILE | MAP_PRIVATE,
-                                      file,
-                                      0 );
-
-    if ( (long)stream->stream_id.pointer == -1 )
-    {
-      PERROR(( "UnixSys.MMapFile_Open : Could not map file '%s'\n",
-               resource->pathname ));
-      goto Fail_Map;
-    }
-
-    close(file);
-    stream->base   = (FT_Byte*)stream->stream_id.pointer;
-    stream->cursor = stream->base;
-    
-    PTRACE1(( "UnixSys.MMapFile_Open: opened '%s' (%d bytes) succesfully\n",
-              resource->pathname, resource->file_size ));
-
-    return FT_Err_Ok;
-    
-  Fail_Map:
-    close(file);
-    stream->resource          = NULL;
-    stream->size              = 0;
-    stream->stream_id.pointer = NULL;
-    stream->base              = NULL;
-    stream->cursor            = NULL;
-    
-    return FT_Err_Cannot_Open_Stream;
-  }
-
-
-/***************************************************************************/
-/*                                                                         */
-/* <Function> MMapFile_Close                                               */
-/*                                                                         */
-/* <Description> Closes a given stream                                     */
-/*                                                                         */
-/* <Input>                                                                 */
-/*   stream   :: the target stream object                                  */
-/*                                                                         */
-/* <Return>                                                                */
-/*   Error code                                                            */
-/*                                                                         */
-/* <Note>                                                                  */
-/*   This function simply unmaps the resource..                            */
-/*                                                                         */
-/***************************************************************************/
-
-  static
-  FT_Error  MMapFile_Close( FT_Stream  stream )
-  {
-    PTRACE1(( "Closing file '%s'\n", STREAM_Name(stream) ));
-    
-    munmap ( (void*)stream->stream_id.pointer, stream->size );
-        
-    stream->resource          = NULL;
-    stream->stream_id.pointer = NULL;
-    stream->size              = 0;
-    stream->base              = NULL;
-    stream->cursor            = NULL;
-
-    return FT_Err_Ok;
-  }
-
-
-/***************************************************************************/
-/*                                                                         */
-/* <Function> MMapFile_Seek                                                */
-/*                                                                         */
-/* <Description> Seek a stream to a given position                         */
-/*                                                                         */
-/* <Input>                                                                 */
-/*   stream   :: the target stream object                                  */
-/*   position :: offset in bytes from start of resource/stream             */
-/*                                                                         */
-/* <Return>                                                                */
-/*   Error code                                                            */
-/*                                                                         */
-/* <Note>                                                                  */
-/*   This function should never be called for memory-based resources..     */
-/*                                                                         */
-/***************************************************************************/
-
-  static
-  FT_Error  MMapFile_Seek( FT_Stream  stream,
-                           FT_Long    position )
-  {
-    (void)stream;
-    (void)position;
-    return FT_Err_Invalid_Stream_Operation;
-  }
-
-
-/***************************************************************************/
-/*                                                                         */
-/* <Function> MMapFile_Skip                                                */
-/*                                                                         */
-/* <Description> Skip a given number of bytes in an MMap stream.           */
-/*               Useful to skip pad bytes, for example.                    */
-/*                                                                         */
-/* <Input>                                                                 */
-/*   stream   :: the target stream object                                  */
-/*   count    :: number of bytes to skip in the stream                     */
-/*                                                                         */
-/* <Return>                                                                */
-/*   Error code                                                            */
-/*                                                                         */
-/* <Note>                                                                  */
-/*   This function should never be called for memory-based resources..     */
-/*                                                                         */
-/***************************************************************************/
-
-  static
-  FT_Error  MMapFile_Skip( FT_Stream  stream,
-                           FT_Long    count )
-  {
-    (void)stream;
-    (void)count;
-    return FT_Err_Invalid_Stream_Operation;
-  }                        
-
-/***************************************************************************/
-/*                                                                         */
-/* <Function> MMapFile_Pos                                                 */
-/*                                                                         */
-/* <Description> Returns the current offset within an MMap stream's        */
-/*               resource.                                                 */
-/*                                                                         */
-/* <Input>                                                                 */
-/*   stream   :: the target stream object                                  */
-/*                                                                         */
-/* <Output>                                                                */
-/*   position :: current offset. -1 in case of error                       */
-/*                                                                         */
-/* <Return>                                                                */
-/*   Error code.                                                           */
-/*                                                                         */
-/* <Note>                                                                  */
-/*   This function should never be called for memory-based resources..     */
-/*                                                                         */
-/***************************************************************************/
-
-  static
-  FT_Error  MMapFile_Pos( FT_Stream  stream,
-                          FT_Long*   position )
-  {
-    (void)stream;
-    (void)position;
-    return FT_Err_Invalid_Stream_Operation;
-  }
-
-/***************************************************************************/
-/*                                                                         */
-/* <Function> MMapFile_Read                                                */
-/*                                                                         */
-/* <Description> Read a given number of bytes from an MMap stream into     */
-/*               memory.                                                   */
-/*                                                                         */
-/* <Input>                                                                 */
-/*   stream   :: the target stream object                                  */
-/*   buffer   :: the target read buffer where data is copied               */
-/*   size     :: number of bytes to read from the stream                   */
-/*                                                                         */
-/* <Output>                                                                */
-/*   read_bytes :: the number of bytes effectively read from the stream    */
-/*                 used in case of error (i.e. FT_Err_Invalid_Stream_Read) */
-/*                 by some parts of the library..                          */
-/* <Return>                                                                */
-/*   Error code                                                            */
-/*                                                                         */
-/* <Note>                                                                  */
-/*   This function should never be called for memory-based resources..     */
-/*                                                                         */
-/***************************************************************************/
-
-  static
-  FT_Error  MMapFile_Read( FT_Stream  stream,
-                           FT_Byte*   buffer,
-                           FT_Long    size,
-                           FT_Long*   read_bytes )
-  {
-    (void)stream;
-    (void)buffer;
-    (void)size;
-    (void)read_bytes;
-    return FT_Err_Invalid_Stream_Operation;                      
-  }
-
-/* The following table is the "virtual method table" for the 'MMap  */
-/* resource class', which methods are defined above. Its address is */
-/* set in the 'interface' field of all resource objects created by  */
-/* the function FT_Create_MMapFile (see below)                      */
-
-  static
-  FTRes_InterfaceRec  FT_MMapFile_Interface =
-  {
-    (FTRes_Open_Func)  MMapFile_Open,
-    (FTRes_Close_Func) MMapFile_Close,
-    (FTRes_Seek_Func)  MMapFile_Seek,
-    (FTRes_Skip_Func)  MMapFile_Skip,
-    (FTRes_Pos_Func)   MMapFile_Pos,
-    (FTRes_Read_Func)  MMapFile_Read,
-  };
-
-
- /************************************************************************/
- /*                                                                      */
- /* <Function>  FT_Create_Resource                                       */
- /*                                                                      */
- /* <Description>                                                        */
- /*    Create a new resource object for a given library. Note that this  */
- /*    function takes an ASCII 'pathname' as an argument.                */
- /*                                                                      */
- /* <Input>                                                              */
- /*     library  :: handle to target library object                      */
- /*     pathanme :: ASCII pathname of the font file                      */
- /*                                                                      */
- /* <Output>                                                             */
- /*     resource :: handle to new resource object                        */
- /*                                                                      */
- /* <Return>                                                             */
- /*     Error code. 0 means success                                      */
- /*                                                                      */
- /* <Note>                                                               */
- /*     When porting the library to exotic environments, where an        */
- /*     ASCII pathname isn't used to name files, developers should       */
- /*     invoke directly their own resource creation function which       */
- /*     must be placed in their port of the "ftsys" component.           */
- /*                                                                      */
- /*     See the porting guide for more information..                     */
- /*                                                                      */
-  EXPORT_FUNC
-  FT_Error  FT_Create_Resource( FT_Library    library,
-                                const char*   pathname,
-                                FT_Resource*  aresource )
-  {
-    FT_Int       len;
-    FT_System    system;
-    FT_MMapFile  resource;
-    FT_Error     error;
-
-    *aresource = NULL;
-    
-    if (!library)
-    {
-      PERROR(( "Unix.New_Resource : null library handle\n" ));
-      return FT_Err_Invalid_Library_Handle;
-    }
-
-    system = library->system;
-
-    if ( !pathname )
-      goto Fail_Null;
-      
-    len = strlen(pathname);
-    if (len == 0)
-      goto Fail_Null;
-
-    resource = NULL;
-    
-    if ( ALLOC( resource, sizeof(*resource) ) ||
-         ALLOC( resource->pathname, len+1   ) )
-      goto Fail_Memory;
-
-    resource->root.library   = library;
-    resource->root.interface = &FT_MMapFile_Interface;
-    resource->root.flags     = FT_RESOURCE_TYPE_MEMORY_BASED;
-    resource->file_size      = -1;
-    strcpy( (char*)resource->pathname, pathname );
-
-    PTRACE1(( "Create_MMapFile : MMap resource created for '%s'\n",
-              pathname ));
-    
-    *aresource = (FT_Resource)resource;
-    return FT_Err_Ok;
-
-  Fail_Null:    
-    PERROR(( "Create_MMapFile : null pathname !!\n" ));
-    return FT_Err_Invalid_Argument;
-    
-  Fail_Memory:
-    if (resource)
-      FREE( resource->pathname );
-    FREE( resource );
-    PERROR(( "Create_MMapFile : error when creating resource !\n" ));
-    return error;
-  }
-
-  
-/***************************************************************************/
-/*                                                                         */
-/* <Function> FT_Destroy_Resource                                          */
-/*                                                                         */
-/* <Description> Destroys an MMap resource object.                         */
-/*               This function is never called directly by the font        */
-/*               drivers. Only by the higher-level part of FreeType        */
-/*               (called the HLib), or client applications                 */
-/*                                                                         */
-/* <Input>                                                                 */
-/*   resource :: the MMap resource object                                  */
-/*                                                                         */
-/* <Note>                                                                  */
-/*   This functions does not check that runs or streams are opened for     */
-/*   the resource (for now, we assume developer intelligence. We'll most   */
-/*   probably lower our standard later to ease debugging ;-)               */
-/*                                                                         */
-/***************************************************************************/
- 
-  EXPORT_FUNC
-  FT_Error  FT_Destroy_Resource( FT_Resource  resource )
-  {
-    FT_System    system = resource->library->system;
-    FT_MMapFile  res    = (FT_MMapFile)resource;
-    
-    if ( !res || res->root.interface != &FT_MMapFile_Interface )
-    {
-      PERROR(( 
-        "Destroy_MMapFile : Trying to destroy an invalid resource !!\n" ));
-      return FT_Err_Invalid_Resource_Handle;
-    }
-    
-    PTRACE1(( "Destroy_MMapFile : destroying resource for '%s'\n",
-              res->pathname ));
-
-    FREE( res->pathname );
-    FREE( res );
-
-    return FT_Err_Ok;
-  }
-
-  
-  
-/**************************************************************************/
-/*                                                                        */
-/*                         MEMORY MANAGEMENT                              */
-/*                                                                        */
-/*                                                                        */
-/*   This part copies the old FreeType 1.0 and 1.1 memory management      */
-/*   scheme that was defined in the file "ttmemory.h". One can see that   */
-/*                                                                        */
-/*   - a set of macros is defined for the memory operations used          */
-/*     by the engine ( MEM_Copy, MEM_Move, MEM_Set ). This comes from     */
-/*     the fact that many compilers are able to inline these ops directly */
-/*     within the compiled code, rather than generating a call to the     */
-/*     C library. However, this obliges us to include the <string.h>      */
-/*     header file.                                                       */
-/*                                                                        */
-/*     If you provide your own memory operations routine, you can get     */
-/*     rid of the #include <string.h> below.                              */
-/*                                                                        */
-/*                                                                        */
-/*   - the FT_Alloc function has several essential properties that        */
-/*     MUST be retained by each port :                                    */
-/*                                                                        */
-/*      - it returns an error code, NOT the allocated block's base        */
-/*        address                                                         */
-/*                                                                        */
-/*      - it takes the address of a target pointer, where the block's     */
-/*        base address will be set. if the size is zero, its value        */
-/*        will be NULL and the function returns successfully              */
-/*                                                                        */
-/*      - in case of error, the pointer's value is set to NULL and        */
-/*        an error code is returned..                                     */
-/*                                                                        */
-/*      - the new allocated block MUST be zero-filled. This is a strong   */
-/*        convetion the rest of the engine relies on                      */
-/*                                                                        */
-/*                                                                        */
-/*                                                                        */
-/*   - the FT_Free function has also its essentials :                     */
-/*                                                                        */
-/*      - it takes the address of a pointer which value is the block's    */
-/*        base address. This is UNLIKE a standard "free" which takes the  */
-/*        the block's base directly.                                      */
-/*                                                                        */
-/*      - it accepts succesfully the address of a pointer which value     */
-/*        is NULL, in which case it simply returns.                       */
-/*                                                                        */
-/*      - the pointer is always set to NULL by the function               */
-/*                                                                        */
-/*                                                                        */
-/*   - the MEM_Alloc, ALLOC and ALLOC_ARRAY macros are used by the        */
-/*     library, and should NOT be modified by porters !!                  */
-/*                                                                        */
-
-/* The macro FT_COMPONENT is used in trace mode. It is an implicit */
-/* parameter of the PTRACE and PERROR macros, used to print/log    */
-/* messages during execution..                                     */
-/*                                                                 */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_memory
-
-
-#include <stdlib.h>
-
-/**************************************************************************/
-/*                                                                        */
-/* <Function> FT_Alloc                                                    */
-/*                                                                        */
-/* <Description>                                                          */
-/*    Allocates a new bloc of memory. The returned area is always         */
-/*    zero-filled, this is a strong convention in many FreeType parts     */
-/*                                                                        */
-/* <Input>                                                                */
-/*    system    :: handle to a given 'system object' where allocation     */
-/*                 occurs..                                               */
-/*                                                                        */
-/*    size      :: size in bytes of the block to allocate                 */
-/*                                                                        */
-/* <Output>                                                               */
-/*    P         :: pointer to the fresh new block. It should be set       */
-/*                 to NULL if 'size' is 0, of in case of error..          */
-/*                                                                        */
-/* <Return>                                                               */
-/*    FreeType error code. 0 means success.                               */
-/*                                                                        */
-/**************************************************************************/
-
-  BASE_FUNC
-  FT_Error  FT_Alloc( FT_System  system,
-                      long       size, 
-                      void*     *P ) 
-  {
-  
-    if (!P)
-    {
-      PERROR(( "FT_Alloc : invalid pointer address !!\n" ));
-      return FT_Err_Invalid_Argument;
-    }
-    
-    if ( size > 0 )
-    {
-      *P = malloc( size );
-      if ( !*P )
-      {
-        PERROR(( "FT_Alloc : out of memory (%ld bytes requested) !!\n",
-                 size ));
-
-        return FT_Err_Out_Of_Memory;
-      }
-
-      system->total_alloc += size;
-
-      /* ALWAYS ZERO-FILL THE BLOCK !!!!! */   
-      MEM_Set( *P, 0, size );
-    }
-    else
-      *P = NULL;
-
-    PTRACE2(( "FT_Alloc : size = %ld, pointer = 0x%08lx, block = 0x%08lx\n",
-              size, (long)P, (long)*P ));
-
-    return FT_Err_Ok;
-  }
-
-
-/**************************************************************************/
-/*                                                                        */
-/* <Function> FT_Realloc                                                  */
-/*                                                                        */
-/* <Description>                                                          */
-/*    Reallocates a block of memory pointed to by '*P' to 'Size'          */
-/*    bytes from the hea^, possibly changing '*P'.                        */
-/*                                                                        */
-/* <Input>                                                                */
-/*    system    :: handle to a given 'system object' where allocation     */
-/*                 occurs..                                               */
-/*                                                                        */
-/*    size      :: size in bytes of the block to allocate                 */
-/*                                                                        */
-/* <InOut>                                                                */
-/*    P         :: pointer to the fresh new block. It should be set       */
-/*                 to NULL if 'size' is 0, of in case of error..          */
-/*                                                                        */
-/* <Return>                                                               */
-/*    FreeType error code. 0 means success.                               */
-/*                                                                        */
-
-  BASE_FUNC
-  int  FT_Realloc( FT_System  system,
-                   long       size, 
-                   void*     *P )
-  {
-    void*  Q;
-    
-    if (!P)
-    {
-      PERROR(( "FT_Realloc : invalid pointer address !!\n" ));
-      return FT_Err_Invalid_Argument;
-    }
-
-    /* if the original pointer is NULL, call FT_Alloc */    
-    if (!*P)
-      return FT_Alloc( system, size, P );
-
-    /* if the new block if zero-sized, clear the current one */    
-    if (size <= 0)
-      return FT_Free( system, P );
-    
-    Q = (void*)realloc( *P, size );
-    if (!Q)
-    {
-      PERROR(( "FT_Realloc : reallocation failed\n" ));
-      return FT_Err_Out_Of_Memory;
-    }
-
-    *P = Q;    
-    return FT_Err_Ok;
-  }
-
-
-/**************************************************************************/
-/*                                                                        */
-/* <Function> FT_Free                                                     */
-/*                                                                        */
-/* <Description>                                                          */
-/*    Releases a given block of memory allocated through FT_Alloc         */
-/*                                                                        */
-/* <Input>                                                                */
-/*    system    :: handle to a given 'system object' where allocation     */
-/*                 occured..                                              */
-/*                                                                        */
-/*    P         :: This is the _address_ of a _pointer_ which points to   */
-/*                 the allocated block. It is always set to NULL on exit  */
-/*                                                                        */
-/* <Return>                                                               */
-/*    FreeType error code. 0 means success.                               */
-/*                                                                        */
-/* <Note>                                                                 */
-/*    If P or *P are NULL, this function should return successfuly. This  */
-/*    is a strong convention within all of FreeType and its drivers..     */
-/*                                                                        */
-
-  BASE_FUNC
-  FT_Error  FT_Free( FT_System  system,
-                     void*     *P )
-  {
-    (void)system;  /* unused parameter. Gets rid of warnings */
-
-    PTRACE2(( "FT_Free : freeing pointer 0x%08lx (block 0x%08lx)\n",
-              (long)P, (P ? (long)*P : -1) ));
-
-    if ( !P || !*P )
-      return FT_Err_Ok;
-
-    free( *P );
-    *P = NULL;
-
-    return FT_Err_Ok;
-  }
-
-/**************************************************************************/
-/*                                                                        */
-/*                       SYNCHRONIZATION MANAGEMENT                       */
-/*                                                                        */
-/*                                                                        */
-/*   This section deals with mutexes. The library can be compiled to      */
-/*   three distinct thread-support levels ( namely single-threaded,       */
-/*   thread-safe and re-entrant modes ).                                  */
-/*                                                                        */
-/*   It protects its variables through the MUTEX_Lock and MUTEX_Release   */
-/*   macros which are void in single-threaded mode.                       */
-/*                                                                        */
-/*                                                                        */
-/*   It defines a type-less mutex reference type, "TMutex", that you're   */
-/*   free to redefine for your system's needs..                           */
-/*                                                                        */
-/*   The default implementation of ftsys.c contains only dummy functions  */
-/*   which always return succesfully. you NEED to specialize them in      */
-/*   order to port ftsys.c in any multi-threaded environment...           */
-/*                                                                        */
-
-/* The macro FT_COMPONENT is used in trace mode. It is an implicit */
-/* parameter of the PTRACE and PERROR macros, used to print/log    */
-/* messages during execution..                                     */
-/*                                                                 */
-#undef  FT_COMPONENT
-#define FT_COMPONENT  trace_sync
-
-#ifdef FT_CONFIG_THREADS
-
-
-  BASE_FUNC
-  FT_Error  FT_Mutex_Create ( FT_System  system,
-                              TMutex*    mutex )
-  {
-    (void)system;  /* unused parameter. Gets rid of warnings */
-    
-    mutex = (void*)-1;
-    system->num_mutexes++;
-    return FT_Err_Ok;
-    /* Replace this line with your own mutex creation code */
-  }
-
-
-  BASE_FUNC
-  void  FT_Mutex_Delete ( FT_System  system,
-                          TMutex*    mutex )
-  {
-    (void)system; /* unused parameter. Gets rid of warnings */
-    
-    mutex = (void*)0;
-    system->num_mutexes--;
-    /* Replace this line with your own mutex destruction code */
-  }
-
-  BASE_FUNC
-  void  FT_Mutex_Lock   ( FT_System  system,
-                          TMutex*    mutex )
-  {
-    /* NOTE: It is legal to call this function with a NULL argument */
-    /*       in which case an immediate return is appropriate.      */
-    (void)system; /* unused parameter. Gets rid of warnings */
-    
-    if ( !mutex )
-      return;
-
-    ; /* Insert your own mutex locking code here */
-  }
-
-
-  void  FT_Mutex_Release( FT_System  system,
-                          TMutex*  mutex )
-  {
-    /* NOTE: It is legal to call this function with a NULL argument */
-    /*       in which case an immediate return is appropriate       */
-    (void)system; /* unused parameter. Gets rid of warnings */
-    
-    if ( !mutex )
-      return;
-    ; /* Insert your own mutex release code here */
-  }
-
-#endif /* FT_CONFIG_THREADS */
-
-
-
-
-  EXPORT_FUNC
-  FT_Error  FT_New_System( FT_System*  system )
-  {
-    *system = (FT_System)malloc( sizeof(FT_SystemRec) );
-    if ( !*system )
-      return FT_Err_Out_Of_Memory;
-
-    /* the ANSI function 'free' is unable to  return the number   */
-    /* of released bytes. Hence, the 'current_alloc' field of the */
-    /* system object cannot be used                               */
-    
-    (*system)->system_flags = FT_SYSTEM_FLAG_TOTAL_ALLOC |
-                              FT_SYSTEM_FLAG_MUTEXES;
-    (*system)->total_alloc = 0;
-    (*system)->num_mutexes = 0;
-
-    /* initialise i/o management (nothing) */
-    
-    /* initialise synchronisation (nothing) */
-    
-    /* initialise streams */
-
-    return FT_Err_Ok;
-  }
-
-
-
-  EXPORT_FUNC
-  FT_Error  FT_Done_System( FT_System  system )
-  {
-    /* finalise syncrhonisation (nothing) */
-    
-    /* finalise i/o management (nothing)  */
-    
-    /* finalise memory management         */
-    free( system );
-
-    return FT_Err_Ok;
-  }
-
--- /dev/null
+++ b/config/unix/unix-dev.mk
@@ -1,0 +1,131 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for a standard Unix + GCC
+#*  NOTE: THIS VERSION TURNS OFF ALL OPTIMIZATIONS FOR DEBUGGING !!
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := rm -f
+SEP      := /
+HOSTSEP  := $(SEP)
+BUILD    := $(TOP)/config/unix
+PLATFORM := unix
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g -O0 -Wall
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_std
+distclean_freetype: distclean_freetype_std
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $@
+	$(AR) -r $@ $(OBJECTS_LIST)
+
+endif
--- /dev/null
+++ b/config/unix/unix-gcc.mk
@@ -1,0 +1,130 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for a standard Unix compiler
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := rm -f
+SEP      := /
+HOSTSEP  := $(SEP)
+BUILD    := $(TOP)/config/unix
+PLATFORM := unix
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g -O6 -Wall
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_std
+distclean_freetype: distclean_freetype_std
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $@
+	$(AR) -r $@ $(OBJECTS_LIST)
+
+endif
--- /dev/null
+++ b/config/unix/unix.mk
@@ -1,0 +1,130 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for a standard Unix compiler
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := rm -f
+SEP      := /
+HOSTSEP  := $(SEP)
+BUILD    := $(TOP)/config/unix
+PLATFORM := unix
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS :=
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_std
+distclean_freetype: distclean_freetype_std
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $@
+	$(AR) -r $@ $(OBJECTS_LIST)
+
+endif
--- a/config/win32/Makefile.gcc
+++ /dev/null
@@ -1,200 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-ifndef TOP
-TOP := .
-endif
-
-DELETE   := del
-SEP      := /
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP)/config/win32
-PLATFORM := win32
-CC       := gcc
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := o
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := a
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := libfreetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -l
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - beware, there is a space after the 'o' !!
-#
-#
-T := -o 
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g -O6 -Wall
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS := -ansi -pedantic
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_dos
-distclean_freetype: distclean_freetype_dos
-
-# Librarian to use to build the static library
-#
-FT_LIBRARIAN := $(AR) -r
-
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
-	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
-
-endif
-
--- a/config/win32/Makefile.lcc
+++ /dev/null
@@ -1,202 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Unix + gcc
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator used during compilation.
-#*                  (usually "/" or "\"). Note that on Win32, both gcc
-#*                  and Visual C++ use "/" as a directory separator !!
-#*
-#*     HOSTSEP      Directory separator for $(COPY) and $(DELETE)
-#*
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-ifndef TOP
-TOP := .
-endif
-
-DELETE   := del
-SEP      := /
-HOSTSEP  := \\
-BUILD    := $(TOP)$(SEP)config$(SEP)win32
-PLATFORM := win32
-CC       := lcc
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := obj
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := lib
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := freetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := -I
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := -D
-
-
-# Target flag - LCC uses "-Fo" instead of "-o ", what a broken compiler
-#
-#
-T := -Fo
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := -Fl
-
-
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := -c -g2 -O
-endif
-
-# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
-#             nothing (if it already is by default like LCC).
-#
-ANSIFLAGS :=
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_dos
-distclean_freetype: distclean_freetype_dos
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-# The LCC-Win32 Librarian, called LCCLIB needs all object files in the current
-# directory. That _is_ stupid, but we'll have to deal with it..
-#
-
-DIR_OBJ := $(subst /,\\,$(OBJ_DIR))
-
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	@$(TOP)/config/win32/lcclib.bat
-
-endif
-
-
--- a/config/win32/Makefile.vcc
+++ /dev/null
@@ -1,187 +1,0 @@
-#*******************************************************************
-#*
-#*  FreeType 2 Configuration rules for Visual C++ on Win32
-#*
-#*  Copyright 1996-1999 by
-#*  David Turner, Robert Wilhelm, and Werner Lemberg.
-#*
-#*  This file is part of the FreeType project, and may only be used
-#*  modified and distributed under the terms of the FreeType project
-#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
-#*  this file you indicate that you have read the license and
-#*  understand and accept it fully.
-#*
-#*
-#*  The purpose of this sub-Makefile is to define various build and
-#*  platform specific variables before including the sub-Makefile
-#*  containing the FreeType library rules, found in
-#*
-#*     $(TOP)/config/freetype.mk
-#*
-#*  The following variables must be defined before including this
-#*  file :
-#*
-#*     TOP          Pathname to the top of the FreeType sources
-#*                  hierarchy
-#*
-#*  This file should define the following variables before including
-#*  the FreeType library rules file :
-#*
-#*     BUILD        Pathname to the platform-specific files used
-#*                  for the build. Usually `$(TOP)/config/<system>'
-#*
-#*     SEP          Directory separator for the current platform.
-#*                  Either / or \ (maybe : on Macs)
-#* 
-#*     DELETE       The forced remove/delete command to erase one or more
-#*                  files
-#*
-#*     INCLUDE      The location of all public header files. e.g.
-#*                  `$(TOP)/include'include'                                      *
-#*                                                                          
-#*     SRC          The directory containing all sources. e.g.              
-#*                  '$(TOP)/src'                                           
-#*                                                                           
-#*     OBJ_DIR      The location where compiled object files will be         
-#*                  placed, e.g. '$(TOP)/obj'                              
-#*                                                                           
-#*     LIB_DIR      The location where the resulting library file will be    
-#*                  placed, e.g. '$(TOP)/obj'                        
-#*                                                                           
-#*     LIBRARY      The filename of the resulting library file, without      
-#*                  its extension.. e.g. 'libfreetype' or 'freetype'         
-#*                                                                           
-#*     O            The object file suffix.  Can be '.o', '.obj,' '.lo,'     
-#*                  ';coff,' etc.                                            
-#*                                                                           
-#*     A            The library file suffix.  Can be '.a' '.so,' '.lib'      
-#*                  '.dll,' etc.                                             
-#*                                                                           
-#*     I            The path inclusion flag.  Some compilers use a           
-#*                  different flag than '-I' to specify an additional        
-#*                  include path.  Examples are '/i=' or '-J ', etc.         
-#*                                                                           
-#*     D            The macro definition flag.  I haven't met compilers      
-#*                  which don't use the '-D' switch to define a macro, but   
-#*                  who knows...                                             
-#*                                                                           
-#*     T            The compilation flag used to identify the target. Some   
-#*                  compilers use a different flag than '-o ' to specify     
-#*                  the name of the target object file.                      
-#*                                                                           
-#*     CFLAGS       The set of flags used to compile object files.
-#*                  (usually contains the flag '-c').
-#*                                                                           
-#*
-#*
-#*******************************************************************
-
-DELETE   := del
-SEP      := /
-HOSTSEP  := $(strip \ )
-BUILD    := $(TOP)$(SEP)config$(SEP)win32
-PLATFORM := win32
-CC       := cl
-
-# the directory where all object files are placed
-#
-# Note that this is not $(TOP)/obj !!
-# This lets you build the library in your own directory
-# with something like :
-#
-#  set TOP=....../path/to/freetype2/top/dir...
-#  mkdir obj
-#  make -f %TOP%/Makefile setup  [options]
-#  make -f %TOP%/Makefile
-#
-#
-OBJ_DIR := obj
-
-
-# the directory where all library files are placed
-#
-#  by default, this is the same as OBJ_DIR, however, this can be
-#  changed to suit particular needs..
-#
-LIB_DIR := $(OBJ_DIR)
-
-
-# the object file extension, this can be .o, .tco, .obj, etc..
-# depending on the platform
-#
-O := obj
-
-# the library file extension, this can be .a, .lib, etc..
-# depending on the platform
-#
-A := lib
-
-
-# The name of the final library file.
-# Note that the DOS-specific Makefile uses a shorter (8.3) name
-#
-LIBRARY := freetype
-
-
-# path inclusion flag.
-#
-#  Some compilers use a different flag than '-I' to specify an
-#  additional include path. Examples are "/i=" or "-J", etc...
-#
-I := /I
-
-
-# The link flag used to specify a given library file on link.
-# Note that this is only used to compile the demo programs, not
-# the library itself.
-#
-L := /Fl
-
-
-# C flag used to define a macro before the compilation of a given
-# source object. Usually is '-D' like in "-DDEBUG"
-#
-D := /D
-
-# Target flag - LCC uses "-Fo" instead of "-o ", what a broken compiler
-#
-#
-T := /Fo
-
-# C flags
-#
-#   These should concern :
-#
-#     - debug output
-#     - optimization
-#     - warnings
-#     - ansi compliance..
-#
-ifndef CFLAGS
-CFLAGS := /nologo /c /Ox /G5 /W3 /WX
-endif
-
-# ANSI_FLAGS : put there the flags used to make your compiler ANSI-compliant
-#              nothing (if it already is by default like LCC).
-#
-ANSI_FLAGS := /Za
-
-ifdef BUILD_FREETYPE
-
-include $(TOP)/config/freetype.mk
-
-clean_freetype: clean_freetype_dos
-distclean_freetype: distclean_freetype_dos
-
-# This final rule is used to link all object files into a single
-# library. It is part of the system-specific sub-Makefile because not
-# all librarians accept a simple syntax like :
-#
-#    librarian library_file {list of object files} 
-#
-$(FT_LIBRARY): $(OBJECTS_LIST)
-	lib /nologo /out:$@ $(OBJECTS_LIST)
-
-endif
-
-
--- a/config/win32/detect.mk
+++ b/config/win32/detect.mk
@@ -43,7 +43,7 @@
 DELETE   := del
 COPY     := copy
 
-CONFIG_FILE := Makefile.gcc  # gcc Makefile by default - aren't we biased ;-)
+CONFIG_FILE := w32-gcc.mk  # gcc Makefile by default - aren't we biased ;-)
 SEP         := /
 ifeq ($(CC),cc)
 CC          := gcc
@@ -50,7 +50,7 @@
 endif
 
 ifneq ($(findstring visualc,$(MAKECMDGOALS)),)     # Visual C/C++
-CONFIG_FILE := Makefile.vcc
+CONFIG_FILE := w32-vcc.mk
 SEP         := $(BACKSLASH)
 CC          := cl
 visualc: setup
@@ -57,7 +57,7 @@
 endif
 
 ifneq ($(findstring watcom,$(MAKECMDGOALS)),)      # Watcom C/C++
-CONFIG_FILE := Makefile.wat
+CONFIG_FILE := w32-wat.mk
 SEP         := $(BACKSLASH)
 CC          := wcc386
 watcom: setup
@@ -64,7 +64,7 @@
 endif
 
 ifneq ($(findstring visualage,$(MAKECMDGOALS)),)   # Visual Age C++
-CONFIG_FILE := Makefile.icc
+CONFIG_FILE := w32-icc.mk
 SEP         := $(BACKSLASH)
 CC          := icc
 visualage: setup
@@ -71,10 +71,17 @@
 endif
 
 ifneq ($(findstring lcc,$(MAKECMDGOALS)),)         # LCC-Win32
-CONFIG_FILE := Makefile.lcc
+CONFIG_FILE := w32-lcc.mk
 SEP         := $(BACKSLASH)
 CC          := lcc
 lcc: setup
+endif
+
+ifneq ($(findstring devel,$(MAKECMDGOALS)),)
+CONFIG_FILE := w32-dev.mk
+CC          := gcc
+SEP         := /
+devel: setup
 endif
 
 CONFIG_RULES := $(TOP)\config\win32\$(CONFIG_FILE)
--- a/config/win32/ftconfig.h
+++ /dev/null
@@ -1,182 +1,0 @@
-/***************************************************************************/
-/*                                                                         */
-/*  ftconfig.h                                                             */
-/*                                                                         */
-/*    ANSI-specific configuration file (specification only).               */
-/*                                                                         */
-/*  Copyright 1996-1999 by                                                 */
-/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
-/*                                                                         */
-/*  This file is part of the FreeType project, and may only be used        */
-/*  modified and distributed under the terms of the FreeType project       */
-/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
-/*  this file you indicate that you have read the license and              */
-/*  understand and accept it fully.                                        */
-/*                                                                         */
-/***************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* This header file contains a number of macro definitions that are used */
-  /* by the rest of the engine.  Porters are free to copy this file and    */
-  /* adapt it to suit their own system.                                    */
-  /*                                                                       */
-  /* IMPORTANT NOTE:                                                       */
-  /*                                                                       */
-  /*    Porters, read carefully the comments in `ftsys.h' before trying to */
-  /*    port this file to your system.  It contains many essential         */
-  /*    remarks, and will ease your work greatly.                          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#ifndef FTCONFIG_H
-#define FTCONFIG_H
-
-/* Include the header file containing all developer build options */
-#include <ftoption.h>
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*               PLATFORM-SPECIFIC CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled to suit a specific system.  The current   */
-  /* ones are defaults used to compile FreeType in an ANSI C environment   */
-  /* (16bit compilers are also supported).  Copy this file to your own     */
-  /* `freetype/arch/<system>'  directory, and edit it to port the engine.  */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-/* Define to empty if the keyword does not work.  */
-/* #undef const */
-
-/* Define if you have the ANSI C header files.  */
-#define STDC_HEADERS 1
-
-/* We use <limits.h> values to know the sizes of the types.  */
-#include <limits.h>
-
-/* The number of bytes in an `int' type.  */
-#if   UINT_MAX == 0xFFFFFFFF
-#define SIZEOF_INT  4
-#elif UINT_MAX == 0xFFFF
-#define SIZEOF_INT  2
-#elif UINT_MAX > 0xFFFFFFFF && UINT_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_INT  8
-#else
-#error "Unsupported number of bytes in `int' type!"
-#endif
-
-/* The number of bytes in a `long' type.  */
-#if   ULONG_MAX == 0xFFFFFFFF
-#define SIZEOF_LONG  4
-#elif ULONG_MAX > 0xFFFFFFFF && ULONG_MAX == 0xFFFFFFFFFFFFFFFF
-#define SIZEOF_LONG  8
-#else
-#error "Unsupported number of bytes in `long' type!"
-#endif
-
-/* Define if you have the memcpy function.  */
-#define HAVE_MEMCPY 1
-
-/* Define if you have the <fcntl.h> header file.  */
-#define HAVE_FCNTL_H 0
-
-/* Define if you have the <unistd.h> header file.  */
-#define HAVE_UNISTD_H 0
-
-
-/* Preferred alignment of data */
-#define FT_ALIGNMENT  8
-
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     AUTOMATIC CONFIGURATION MACROS                    */
-  /*                                                                       */
-  /*  These macros are computed from the ones defined above.  Don't touch  */
-  /*  their definition, unless you know precisely what you're doing.  No   */
-  /*  porter should need to mess with them.                                */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* IntN types                                                            */
-  /*                                                                       */
-  /*   Used to guarantee the size of some specific integers.               */
-  /*                                                                       */
-  typedef signed short    FT_Int16;
-  typedef unsigned short  FT_Word16;
-
-#if SIZEOF_INT == 4
-
-  typedef signed int      FT_Int32;
-  typedef unsigned int    FT_Word32;
-
-#elif SIZEOF_LONG == 4
-
-  typedef signed long     FT_Int32;
-  typedef unsigned long   FT_Word32;
-
-#else
-#error "no 32bit type found - please check your configuration files"
-#endif
-
-#if SIZEOF_LONG == 8
-
-  /* LONG64 must be defined when a 64-bit type is available */
-#define LONG64
-#define INT64   long
-
-#else
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI 'long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro in `ftconfig.h'.  Note  */
-  /* that this will produce many -ansi warnings during library             */
-  /* compilation.                                                          */
-  /*                                                                       */
-#ifdef FTCALC_USE_LONG_LONG
-
-#define LONG64
-#define INT64   long long
-
-#endif /* FTCALC_USE_LONG_LONG */
-#endif
-
-
-#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-#define  LOCAL_DEF   static
-#define  LOCAL_FUNC  static
-#else
-#define  LOCAL_DEF   extern
-#define  LOCAL_FUNC  /* nothing */
-#endif
-
-#ifdef FT_MAKE_OPTION_SINGLE_LIBRARY_OBJECT
-#define  BASE_DEF    LOCAL_DEF
-#define  BASE_FUNC   LOCAL_FUNC
-#else
-#define  BASE_DEF    extern
-#define  BASE_FUNC   /* nothing */
-#endif
-
-#ifndef  EXPORT_DEF
-#define  EXPORT_DEF   extern
-#endif
-
-#ifndef  EXPORT_FUNC
-#define  EXPORT_FUNC  /* nothing */
-#endif
-
-#endif /* FTCONFIG_H */
-
-
-/* END */
--- a/config/win32/ftmodule.h
+++ /dev/null
@@ -1,5 +1,0 @@
-FT_DRIVER(psnames_driver_interface)
-FT_DRIVER(sfnt_driver_interface)
-FT_DRIVER(tt_driver_interface)
-FT_DRIVER(t1_driver_interface)
-
--- a/config/win32/ftoption.h
+++ /dev/null
@@ -1,204 +1,0 @@
-#ifndef FTOPTION_H
-#define FTOPTION_H
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                 USER-SELECTABLE CONFIGURATION MACROS                  */
-  /*                                                                       */
-  /* These macros can be toggled by developers to enable or disable        */
-  /* certain aspects of FreeType.  This file contains macros that apply to */
-  /* all of FreeType.  Driver-specific configurations are placed in each   */
-  /* driver directory (e.g. `freetype/drivers/ttlib/ttconfig.h').          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Alternate Glyph Image Format support                                  */
-  /*                                                                       */
-  /*   By default, the glyph images returned by the FreeType glyph loader  */
-  /*   can either be a pixmap or a vectorial outline defined through       */
-  /*   bezier control points. When defining the following configuration    */
-  /*   macro, some font drivers will be able to register alternate         */
-  /*   glyph image formats.                                                */
-  /*                                                                       */
-  /*   Unset this macro if you're sure that you'll never use a font driver */
-  /*   with an alternate glyph format, this will reduce the size of the    */
-  /*   base layer code.                                                    */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ALTERNATE_GLYPH_FORMATS
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Glyph Postscript Names handling                                       */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. This module is in charge of converting a glyph name string into */
-  /*   a Unicode value, or return a Macintosh standard glyph name for the  */
-  /*   use with the TrueType "post" table.                                 */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the "psnames" compiled in    */
-  /*   your build of FreeType. This has the following effects :            */
-  /*                                                                       */
-  /*   - the TrueType driver will provide its own set of glyph names,      */
-  /*     if you build it to support postscript names in the TrueType       */
-  /*     "post" table.                                                     */
-  /*                                                                       */
-  /*   - the Type 1 driver will not be able to synthetize a                */
-  /*     Unicode charmap out of the glyphs found in the fonts.             */
-  /*                                                                       */
-  /*   You would normally undefine this configuration macro when           */
-  /*   building a version of FreeType that doesn't contain a Type 1        */
-  /*   or CFF driver.                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_POSTSCRIPT_NAMES
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Postscript Names to Unicode Values support                            */
-  /*                                                                       */
-  /*   By default, FreeType 2 is built with the "psnames" module compiled  */
-  /*   in. Among other things, the module is used to convert a glyph       */
-  /*   name into a unicode value. This is especially useful in order to    */
-  /*   synthetize on the fly a Unicode charmap from the CFF/Type 1 driver  */
-  /*   through a big table named the "Adobe Glyph List".                   */
-  /*                                                                       */
-  /*   Undefine this macro if you do not want the Adobe Glyph List         */
-  /*   compiled in your "psnames" module. The Type 1 driver will not       */
-  /*   be able to synthetize a Unicode charmap out of the glyphs found     */
-  /*   in the fonts..                                                      */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ADOBE_GLYPH_LIST
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* GCC provides the non-ANSI `long long' 64-bit type.  You can activate  */
-  /* it by defining the FTCALC_USE_LONG_LONG macro here.  Note however     */
-  /* that we did not experience any improvement in speed with gcc, and     */
-  /* that the final code seems bigger when linked.                         */
-  /*                                                                       */
-#undef FTCALC_USE_LONG_LONG
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* When compiling FreeType as a DLL, some systems/compilers need a       */
-  /* special keyword in front of each function definition instead of       */
-  /* `extern'.                                                             */
-  /*                                                                       */
-  /* The macros EXPORT_DEF and EXPORT_FUNC are thus used to define         */
-  /* exported library function interfaces and exported library functions   */
-  /* implementations respectively.                                         */
-  /*                                                                       */
-  /* If not defined here, they automatically default to `extern' and void  */
-  /* later in this header file.                                            */
-  /*                                                                       */
-#undef EXPORT_DEF
-#undef EXPORT_FUNC
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Debug level                                                           */
-  /*                                                                       */
-  /*   FreeType can be compiled in debug or trace mode.  In debug mode,    */
-  /*   errors are reported through the `ftdebug' component.  In trace      */
-  /*   mode, additional messages are sent to the standard output during    */
-  /*   execution.                                                          */
-  /*                                                                       */
-  /*   Define FT_DEBUG_LEVEL_ERROR to build the library in debug mode.     */
-  /*   Define FT_DEBUG_LEVEL_TRACE to build it in trace mode.              */
-  /*                                                                       */
-  /*   Don't define any of these macros to compile in `release' mode.      */
-  /*                                                                       */
-#undef  FT_DEBUG_LEVEL_ERROR
-#undef  FT_DEBUG_LEVEL_TRACE
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Anti-aliasing support                                                 */
-  /*                                                                       */
-  /*   Undefine this macro only if you want to disable the anti-aliasing   */
-  /*   support in FreeType.  This will save you about 5 Kb of code.  It    */
-  /*   may be important for some embedded systems.                         */
-  /*                                                                       */
-#define FT_CONFIG_OPTION_ANTI_ALIAS
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Endianess performance improvement                                     */
-  /*                                                                       */
-  /*   FreeType is completely endian-independent, and can thus be compiled */
-  /*   directly on _any_ machine.  However, some components of the library */
-  /*   provide improved routines for the cases where endianess is known.   */
-  /*                                                                       */
-  /*   It usually results in speed-ups and reduced code size.  Note that   */
-  /*   you should not define both of these macros.                         */
-  /*                                                                       */
-  /*                                                                       */
-  /*   NOTE: For now, only the scan-line converter (base/ftraster.c) uses  */
-  /*         these macros to speed-up some anti-alias rendering routines.  */
-  /*                                                                       */
-#undef  FT_CONFIG_OPTION_LITTLE_ENDIAN
-#undef  FT_CONFIG_OPTION_BIG_ENDIAN
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Define this configuration macro whenever you want to build a version  */
-  /* of FreeType that does not include a default `system' component.       */
-  /*                                                                       */
-  /* Note that this will prevent the compilation of `ftinit', hence the    */
-  /* function FT_Init_FreeType                                             */
-  /*                                                                       */
-#undef FT_CONFIG_OPTION_NO_DEFAULT_SYSTEM
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    The size in bytes of the render pool used by the scan-line         */
-  /*    converter to do all of its work.                                   */
-  /*                                                                       */
-  /*    This must be greater than 4 Kb                                     */
-  /*                                                                       */
-#define FT_RENDER_POOL_SIZE   32768
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_DRIVERS                                                     */
-  /*                                                                       */
-  /*    The maximum number of font drivers that can be registered in a     */
-  /*    single FreeType library object.  8 seems to be a good choice due   */
-  /*    to the relative low actual number of drivers ;-)                   */
-  /*                                                                       */
-#define FT_MAX_DRIVERS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_EXTENSIONS                                                  */
-  /*                                                                       */
-  /*    The maximum number of extensions that can be registered in a       */
-  /*    single font driver. 8 seems to be a good choice for now..          */
-  /*                                                                       */
-#define FT_MAX_EXTENSIONS  8
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*    FT_MAX_GLYPH_FORMATS                                               */
-  /*                                                                       */
-  /*    The maximum number of glyph image formats that might be registered */
-  /*    in a given library instance. 8 seems to be a good choice due to    */
-  /*    the relatively low number of current formats ;-)                   */
-  /*                                                                       */
-
-#define FT_MAX_GLYPH_FORMATS  8
-
-
-
-#endif /* FTOPTION_H */
--- a/config/win32/ftsystem.c
+++ /dev/null
@@ -1,214 +1,0 @@
-/**************************************************************************
- *
- *  ftsystem.h                                                        1.0
- *
- *    ANSI-specific FreeType low-level system interface
- *
- *    This file contains the definition of interface used by FreeType
- *    to access low-level, i.e. memory management, i/o access as well
- *    as thread synchronisation.              
- *
- *
- *  Copyright 1996-1999 by                                                   
- *  David Turner, Robert Wilhelm, and Werner Lemberg                         
- *                                                                           
- *  This file is part of the FreeType project, and may only be used          
- *  modified and distributed under the terms of the FreeType project         
- *  license, LICENSE.TXT.  By continuing to use, modify, or distribute       
- *  this file you indicate that you have read the license and                 
- *  understand and accept it fully.                                          
- *                                                                           
- **************************************************************************/
-
-#include <ftsystem.h>
-#include <fterrors.h>
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                       MEMORY MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Alloc_Func
- *
- * <Description>
- *    The memory allocator function type
- *
- * <Input>
- *    system    :: pointer to the system object
- *    size      :: requested size in bytes
- *
- * <Output>
- *    block     :: address of newly allocated block
- *
- * <Return>  
- *    Error code. 0 means success.
- *
- * <Note>
- *    If your allocation routine ALWAYS zeroes the new block, you
- *    should set the flag FT_SYSTEM_FLAG_ALLOC_ZEROES in your system
- *    object 'flags' field.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_alloc( FT_Memory  memory,
-                   long       size )
-  {
-    (void)memory;
-    return malloc(size);
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Realloc_Func
- *
- * <Description>
- *    The memory reallocator function type
- *
- * <Input>
- *    system   :: pointer to the system object
- *    new_size :: new requested size in bytes
- *
- * <InOut>
- *    block    :: address of block in memory
- *
- * <Return>
- *    Error code. 0 means success.
- *
- * <Note>
- *    This function is _never_ called when the system flag 
- *    FT_SYSTEM_FLAG_NO_REALLOC is set. Instead, the engine will emulate
- *    realloc through "alloc" and "free".
- *
- *    Note that this is possible due to the fact that FreeType's
- *    "FT_Realloc" always requests the _current_ size of the reallocated
- *    block as a parameter, thus avoiding memory leaks.
- *
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void*  ft_realloc( FT_Memory  memory,
-                     long       cur_size,
-                     long       new_size,
-                     void*      block )
-  {
-    (void)memory;
-    (void)cur_size;
-
-    return realloc( block, new_size );
-  }
-
-
-/************************************************************************
- *
- * <FuncType>
- *    FT_Free_Func
- *
- * <Description>
- *    The memory release function type
- *
- * <Input>
- *    system  :: pointer to the system object
- *    block   :: address of block in memory
- *
- * <Note>
- *    If you have set the flag FT_SYSTEM_FLAG_REPORT_CURRENT_ALLOC in
- *    your system's "system_flags" field, this function should update
- *    the "current_alloc" field of the system object.
- *
- ************************************************************************/
-
-  static
-  void  ft_free( FT_Memory  memory,
-                 void*      block )
-  {
-    (void)memory;
-    free( block );
-  }
-
-  /*********************************************************************/
-  /*                                                                   */
-  /*                     RESOURCE MANAGEMENT INTERFACE                 */
-  /*                                                                   */
-
-
-#define STREAM_FILE(stream)  ((FILE*)stream->descriptor.pointer)
-
-  static
-  void  ft_close_stream( FT_Stream  stream )
-  {
-    fclose( STREAM_FILE(stream) );
-  }
-
-  static
-  unsigned long  ft_io_stream( FT_Stream      stream,
-                               unsigned long  offset,
-                               char*          buffer,
-                               unsigned long  count )
-  {
-    FILE*  file;
-    
-    file = STREAM_FILE(stream);
-
-    fseek( file, offset, SEEK_SET );    
-    return (unsigned long)fread( buffer, 1, count, file );
-  }
-
-
-  extern
-  int  FT_New_Stream( const char*  filepathname,
-                      FT_Stream    stream )
-  {
-    FILE*  file;
-    
-    file = fopen( filepathname, "rb" );
-    if (!file)
-      return FT_Err_Cannot_Open_Resource;
-      
-    fseek( file, 0, SEEK_END );
-    stream->size = ftell(file);
-    fseek( file, 0, SEEK_SET );
-    
-    stream->descriptor.pointer = file;
-    stream->pos                = 0;
-    
-    stream->read  = ft_io_stream;
-    stream->close = ft_close_stream;
-
-    return 0;
-  }
-
-
-  extern
-  FT_Memory  FT_New_Memory( void )
-  {
-    FT_Memory  memory;
-    
-    memory = (FT_Memory)malloc( sizeof(*memory) );
-    if (memory)
-    {
-      memory->user    = 0;
-      memory->alloc   = ft_alloc;
-      memory->realloc = ft_realloc;
-      memory->free    = ft_free;
-    }
-    return memory;
-  }
-
--- a/config/win32/lcclib.bat
+++ /dev/null
@@ -1,12 +1,0 @@
-@cd obj
-@LCCLIB /out:freetype.lib *.obj
-@echo The library file `obj/freetype.lib' was generated.
-@exit 0
-
-; the LCC Librarian has many flaws, one of them is that it *requires* that
-; all object files be placed in the current directory. Another flaw is that
-; it cannot accept a long list of object files.
-;
-; this file is used to build the library file `obj/freetype.lib'
-; 
-
--- /dev/null
+++ b/config/win32/w32-dev.mk
@@ -1,0 +1,142 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for Win32 + GCC
+#*  THIS VERSION DISABLES OPTIMIZATIONS FOR DEBUGGING !!
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*
+#*  NOTE : This version requires that GNU Make be invoked from the
+#*         Windows Shell (_not_ Cygwin BASH !!)
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := del
+SEP      := /
+HOSTSEP  := $(strip \ )
+BUILD    := $(TOP)/config/win32
+PLATFORM := win32
+CC       := gcc
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g -O0 -Wall
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
+# Librarian to use to build the static library
+#
+FT_LIBRARIAN := $(AR) -r
+
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
+	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
+
+endif
+
--- /dev/null
+++ b/config/win32/w32-gcc.mk
@@ -1,0 +1,141 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for Win32 + GCC
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*
+#*  NOTE : This version requires that GNU Make be invoked from the
+#*         Windows Shell (_not_ Cygwin BASH !!)
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := del
+SEP      := /
+HOSTSEP  := $(strip \ )
+BUILD    := $(TOP)/config/win32
+PLATFORM := win32
+CC       := gcc
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := o
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := a
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := libfreetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -l
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - beware, there is a space after the 'o' !!
+#
+#
+T := -o 
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g -O6 -Wall
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS := -ansi -pedantic
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
+# Librarian to use to build the static library
+#
+FT_LIBRARIAN := $(AR) -r
+
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	-$(DELETE) $(subst $(SEP),$(HOSTSEP),$(FT_LIBRARY)) 2> nul
+	$(FT_LIBRARIAN) $@ $(OBJECTS_LIST)
+
+endif
+
--- /dev/null
+++ b/config/win32/w32-lcc.mk
@@ -1,0 +1,135 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for Win32 + LCC
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+ifndef TOP
+TOP := .
+endif
+
+DELETE   := del
+SEP      := /
+HOSTSEP  := \\
+BUILD    := $(TOP)$(SEP)config$(SEP)win32
+PLATFORM := win32
+CC       := lcc
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := obj
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := lib
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := freetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := -I
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := -D
+
+
+# Target flag - LCC uses "-Fo" instead of "-o ", what a broken compiler
+#
+#
+T := -Fo
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := -Fl
+
+
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := -c -g2 -O
+endif
+
+# ANSIFLAGS : put there the flags used to make your compiler ANSI-compliant
+#             nothing (if it already is by default like LCC).
+#
+ANSIFLAGS :=
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+DIR_OBJ := $(subst /,\\,$(OBJ_DIR))
+
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	lcclnk -o $(subst /,\\,$@) $(subst /,\\,$<)
+
+endif
+
+
--- /dev/null
+++ b/config/win32/w32-vcc.mk
@@ -1,0 +1,127 @@
+#*******************************************************************
+#*
+#*  FreeType 2 Configuration rules for Win32 + Visual C++
+#*
+#*  Copyright 1996-2000 by
+#*  David Turner, Robert Wilhelm, and Werner Lemberg.
+#*
+#*  This file is part of the FreeType project, and may only be used
+#*  modified and distributed under the terms of the FreeType project
+#*  license, LICENSE.TXT.  By continuing to use, modify, or distribute
+#*  this file you indicate that you have read the license and
+#*  understand and accept it fully.
+#*
+#*  Please read the file "freetype/docs/config.txt" to understand
+#*  what this file does..
+#*
+#*******************************************************************
+
+DELETE   := del
+SEP      := /
+HOSTSEP  := $(strip \ )
+BUILD    := $(TOP)$(SEP)config$(SEP)win32
+PLATFORM := win32
+CC       := cl
+
+# the directory where all object files are placed
+#
+# Note that this is not $(TOP)/obj !!
+# This lets you build the library in your own directory
+# with something like :
+#
+#  set TOP=....../path/to/freetype2/top/dir...
+#  mkdir obj
+#  make -f %TOP%/Makefile setup  [options]
+#  make -f %TOP%/Makefile
+#
+#
+OBJ_DIR := obj
+
+
+# the directory where all library files are placed
+#
+#  by default, this is the same as OBJ_DIR, however, this can be
+#  changed to suit particular needs..
+#
+LIB_DIR := $(OBJ_DIR)
+
+
+# the object file extension, this can be .o, .tco, .obj, etc..
+# depending on the platform
+#
+O := obj
+
+# the library file extension, this can be .a, .lib, etc..
+# depending on the platform
+#
+A := lib
+
+
+# The name of the final library file.
+# Note that the DOS-specific Makefile uses a shorter (8.3) name
+#
+LIBRARY := freetype
+
+
+# path inclusion flag.
+#
+#  Some compilers use a different flag than '-I' to specify an
+#  additional include path. Examples are "/i=" or "-J", etc...
+#
+I := /I
+
+
+# The link flag used to specify a given library file on link.
+# Note that this is only used to compile the demo programs, not
+# the library itself.
+#
+L := /Fl
+
+
+# C flag used to define a macro before the compilation of a given
+# source object. Usually is '-D' like in "-DDEBUG"
+#
+D := /D
+
+# Target flag - LCC uses "-Fo" instead of "-o ", what a broken compiler
+#
+#
+T := /Fo
+
+# C flags
+#
+#   These should concern :
+#
+#     - debug output
+#     - optimization
+#     - warnings
+#     - ansi compliance..
+#
+ifndef CFLAGS
+CFLAGS := /nologo /c /Ox /G5 /W3 /WX
+endif
+
+# ANSI_FLAGS : put there the flags used to make your compiler ANSI-compliant
+#              nothing (if it already is by default like LCC).
+#
+ANSI_FLAGS := /Za
+
+ifdef BUILD_FREETYPE
+
+include $(TOP)/config/freetype.mk
+
+clean_freetype: clean_freetype_dos
+distclean_freetype: distclean_freetype_dos
+
+# This final rule is used to link all object files into a single
+# library. It is part of the system-specific sub-Makefile because not
+# all librarians accept a simple syntax like :
+#
+#    librarian library_file {list of object files} 
+#
+$(FT_LIBRARY): $(OBJECTS_LIST)
+	lib /nologo /out:$@ $(OBJECTS_LIST)
+
+endif
+
+