SDL_ttf: added windows x86 and x64 builds of freetype2 and harfbuzz for MSVC

From 6bb09f89b599da2c2029f631e874705f7203c89f Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Thu, 8 Apr 2021 18:37:00 +0300
Subject: [PATCH] added windows x86 and x64 builds of freetype2 and harfbuzz
 for MSVC

---
 .../include/freetype/config/ftconfig.h        |  616 +-
 .../include/freetype/config/ftheader.h        |  390 +-
 .../include/freetype/config/ftmodule.h        |    2 -
 .../include/freetype/config/ftoption.h        | 1391 ++--
 .../include/freetype/config/ftstdlib.h        |  160 +-
 .../include/freetype/config/integer-types.h   |  245 +
 .../include/freetype/config/mac-support.h     |   49 +
 .../include/freetype/config/public-macros.h   |  120 +
 VisualC/external/include/freetype/freetype.h  | 7054 +++++++++--------
 VisualC/external/include/freetype/ftadvanc.h  |  243 +-
 VisualC/external/include/freetype/ftbbox.h    |  132 +-
 VisualC/external/include/freetype/ftbdf.h     |  244 +-
 VisualC/external/include/freetype/ftbitmap.h  |  441 +-
 VisualC/external/include/freetype/ftbzip2.h   |  144 +-
 VisualC/external/include/freetype/ftcache.h   | 1193 +--
 .../external/include/freetype/ftchapters.h    |  284 +-
 VisualC/external/include/freetype/ftcid.h     |  105 +-
 VisualC/external/include/freetype/ftcolor.h   |  313 +
 VisualC/external/include/freetype/ftdriver.h  |  756 +-
 VisualC/external/include/freetype/fterrdef.h  |  101 +-
 VisualC/external/include/freetype/fterrors.h  |  272 +-
 VisualC/external/include/freetype/ftfntfmt.h  |  120 +-
 VisualC/external/include/freetype/ftgasp.h    |   77 +-
 VisualC/external/include/freetype/ftglyph.h   | 1002 +--
 VisualC/external/include/freetype/ftgxval.h   |  493 +-
 VisualC/external/include/freetype/ftgzip.h    |  230 +-
 VisualC/external/include/freetype/ftimage.h   | 1786 +++--
 VisualC/external/include/freetype/ftincrem.h  |  144 +-
 VisualC/external/include/freetype/ftlcdfil.h  |  327 +-
 VisualC/external/include/freetype/ftlist.h    |  424 +-
 VisualC/external/include/freetype/ftlzw.h     |  141 +-
 VisualC/external/include/freetype/ftmac.h     |  400 +-
 VisualC/external/include/freetype/ftmm.h      | 1106 +--
 VisualC/external/include/freetype/ftmodapi.h  |  949 ++-
 VisualC/external/include/freetype/ftmoderr.h  |  191 +-
 VisualC/external/include/freetype/ftotval.h   |  306 +-
 VisualC/external/include/freetype/ftoutln.h   |  938 +--
 VisualC/external/include/freetype/ftparams.h  |  102 +-
 VisualC/external/include/freetype/ftpfr.h     |  261 +-
 VisualC/external/include/freetype/ftrender.h  |  219 +-
 VisualC/external/include/freetype/ftsizes.h   |  242 +-
 VisualC/external/include/freetype/ftsnames.h  |  399 +-
 VisualC/external/include/freetype/ftstroke.h  |  436 +-
 VisualC/external/include/freetype/ftsynth.h   |   41 +-
 VisualC/external/include/freetype/ftsystem.h  |  135 +-
 VisualC/external/include/freetype/fttrigon.h  |   86 +-
 VisualC/external/include/freetype/fttypes.h   |  855 +-
 VisualC/external/include/freetype/ftwinfnt.h  |  165 +-
 VisualC/external/include/freetype/t1tables.h  |  619 +-
 VisualC/external/include/freetype/ttnameid.h  |  139 +-
 VisualC/external/include/freetype/tttables.h  |  979 +--
 VisualC/external/include/freetype/tttags.h    |   38 +-
 VisualC/external/include/ft2build.h           |   62 +-
 .../external/include/harfbuzz/hb-aat-layout.h |  795 ++
 VisualC/external/include/harfbuzz/hb-aat.h    |   38 +
 VisualC/external/include/harfbuzz/hb-blob.h   |  150 +
 VisualC/external/include/harfbuzz/hb-buffer.h |  691 ++
 VisualC/external/include/harfbuzz/hb-common.h |  861 ++
 .../external/include/harfbuzz/hb-deprecated.h |  254 +
 VisualC/external/include/harfbuzz/hb-draw.h   |   98 +
 VisualC/external/include/harfbuzz/hb-face.h   |  177 +
 VisualC/external/include/harfbuzz/hb-font.h   | 1063 +++
 VisualC/external/include/harfbuzz/hb-ft.h     |  138 +
 VisualC/external/include/harfbuzz/hb-map.h    |  114 +
 .../external/include/harfbuzz/hb-ot-color.h   |  142 +
 .../include/harfbuzz/hb-ot-deprecated.h       |  126 +
 .../external/include/harfbuzz/hb-ot-font.h    |   45 +
 .../external/include/harfbuzz/hb-ot-layout.h  |  524 ++
 .../external/include/harfbuzz/hb-ot-math.h    |  307 +
 .../external/include/harfbuzz/hb-ot-meta.h    |   72 +
 .../external/include/harfbuzz/hb-ot-metrics.h |  124 +
 .../external/include/harfbuzz/hb-ot-name.h    |  128 +
 .../external/include/harfbuzz/hb-ot-shape.h   |   53 +
 VisualC/external/include/harfbuzz/hb-ot-var.h |  191 +
 VisualC/external/include/harfbuzz/hb-ot.h     |   49 +
 VisualC/external/include/harfbuzz/hb-set.h    |  180 +
 .../external/include/harfbuzz/hb-shape-plan.h |  122 +
 VisualC/external/include/harfbuzz/hb-shape.h  |   62 +
 VisualC/external/include/harfbuzz/hb-style.h  |   43 +
 VisualC/external/include/harfbuzz/hb-subset.h |   97 +
 .../external/include/harfbuzz/hb-unicode.h    |  643 ++
 .../external/include/harfbuzz/hb-version.h    |   95 +
 VisualC/external/include/harfbuzz/hb.h        |   50 +
 VisualC/external/lib/x64/LICENSE.harfbuzz.txt |   38 +
 VisualC/external/lib/x64/libfreetype-6.dll    |  Bin 586240 -> 615936 bytes
 VisualC/external/lib/x64/libfreetype-6.lib    |  Bin 45934 -> 47764 bytes
 VisualC/external/lib/x64/libharfbuzz-0.dll    |  Bin 0 -> 1092096 bytes
 VisualC/external/lib/x64/libharfbuzz-0.lib    |  Bin 0 -> 101730 bytes
 VisualC/external/lib/x86/LICENSE.harfbuzz.txt |   38 +
 VisualC/external/lib/x86/libfreetype-6.dll    |  Bin 550912 -> 577024 bytes
 VisualC/external/lib/x86/libfreetype-6.lib    |  Bin 46910 -> 48782 bytes
 VisualC/external/lib/x86/libharfbuzz-0.dll    |  Bin 0 -> 1086976 bytes
 VisualC/external/lib/x86/libharfbuzz-0.lib    |  Bin 0 -> 103652 bytes
 93 files changed, 21863 insertions(+), 13312 deletions(-)
 create mode 100644 VisualC/external/include/freetype/config/integer-types.h
 create mode 100644 VisualC/external/include/freetype/config/mac-support.h
 create mode 100644 VisualC/external/include/freetype/config/public-macros.h
 create mode 100644 VisualC/external/include/freetype/ftcolor.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-aat-layout.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-aat.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-blob.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-buffer.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-common.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-deprecated.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-draw.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-face.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-font.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ft.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-map.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-color.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-deprecated.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-font.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-layout.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-math.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-meta.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-metrics.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-name.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-shape.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot-var.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-ot.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-set.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-shape-plan.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-shape.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-style.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-subset.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-unicode.h
 create mode 100644 VisualC/external/include/harfbuzz/hb-version.h
 create mode 100644 VisualC/external/include/harfbuzz/hb.h
 create mode 100644 VisualC/external/lib/x64/LICENSE.harfbuzz.txt
 create mode 100644 VisualC/external/lib/x64/libharfbuzz-0.dll
 create mode 100644 VisualC/external/lib/x64/libharfbuzz-0.lib
 create mode 100644 VisualC/external/lib/x86/LICENSE.harfbuzz.txt
 create mode 100644 VisualC/external/lib/x86/libharfbuzz-0.dll
 create mode 100644 VisualC/external/lib/x86/libharfbuzz-0.lib

diff --git a/VisualC/external/include/freetype/config/ftconfig.h b/VisualC/external/include/freetype/config/ftconfig.h
index 19d091d..baa87a2 100644
--- a/VisualC/external/include/freetype/config/ftconfig.h
+++ b/VisualC/external/include/freetype/config/ftconfig.h
@@ -1,39 +1,37 @@
-/* ftconfig.h.  Generated from ftconfig.in by configure.  */
-/***************************************************************************/
-/*                                                                         */
-/*  ftconfig.in                                                            */
-/*                                                                         */
-/*    UNIX-specific configuration file (specification only).               */
-/*                                                                         */
-/*  Copyright 1996-2018 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 `builds/<system>', and contains        */
-  /* system-specific files that are always included first when building    */
-  /* the library.                                                          */
-  /*                                                                       */
-  /*************************************************************************/
-
+/* ftconfig.h.  Generated from ftconfig.h.in by configure.  */
+/****************************************************************************
+ *
+ * ftconfig.h.in
+ *
+ *   UNIX-specific configuration file (specification only).
+ *
+ * Copyright (C) 1996-2020 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 `builds/<system>`, and contains
+   * system-specific files that are always included first when building the
+   * library.
+   *
+   */
 
 #ifndef FTCONFIG_H_
 #define FTCONFIG_H_
@@ -42,39 +40,8 @@
 #include FT_CONFIG_OPTIONS_H
 #include FT_CONFIG_STANDARD_LIBRARY_H
 
-
-FT_BEGIN_HEADER
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*               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     */
-  /* `builds/<system>' directory, and edit it to port the engine.          */
-  /*                                                                       */
-  /*************************************************************************/
-
-
 #define HAVE_UNISTD_H 1
 #define HAVE_FCNTL_H 1
-#define HAVE_STDINT_H 1
-
-
-  /* There are systems (like the Texas Instruments 'C54x) where a `char' */
-  /* has 16 bits.  ANSI C says that sizeof(char) is always 1.  Since an  */
-  /* `int' has 16 bits also for this system, sizeof(int) gives 1 which   */
-  /* is probably unexpected.                                             */
-  /*                                                                     */
-  /* `CHAR_BIT' (defined in limits.h) gives the number of bits in a      */
-  /* `char' type.                                                        */
-
-#ifndef FT_CHAR_BIT
-#define FT_CHAR_BIT  CHAR_BIT
-#endif
-
 
 /* #undef FT_USE_AUTOCONF_SIZEOF_TYPES */
 #ifdef FT_USE_AUTOCONF_SIZEOF_TYPES
@@ -84,518 +51,11 @@ FT_BEGIN_HEADER
 #define FT_SIZEOF_INT  SIZEOF_INT
 #define FT_SIZEOF_LONG SIZEOF_LONG
 
-#else /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
-
-  /* Following cpp computation of the bit length of int and long */
-  /* is copied from default include/freetype/config/ftconfig.h.  */
-  /* If any improvement is required for this file, it should be  */
-  /* applied to the original header file for the builders that   */
-  /* do not use configure script.                                */
-
-  /* The size of an `int' type.  */
-#if                                 FT_UINT_MAX == 0xFFFFUL
-#define FT_SIZEOF_INT  (16 / FT_CHAR_BIT)
-#elif                               FT_UINT_MAX == 0xFFFFFFFFUL
-#define FT_SIZEOF_INT  (32 / FT_CHAR_BIT)
-#elif FT_UINT_MAX > 0xFFFFFFFFUL && FT_UINT_MAX == 0xFFFFFFFFFFFFFFFFUL
-#define FT_SIZEOF_INT  (64 / FT_CHAR_BIT)
-#else
-#error "Unsupported size of `int' type!"
-#endif
-
-  /* The size of a `long' type.  A five-byte `long' (as used e.g. on the */
-  /* DM642) is recognized but avoided.                                   */
-#if                                  FT_ULONG_MAX == 0xFFFFFFFFUL
-#define FT_SIZEOF_LONG  (32 / FT_CHAR_BIT)
-#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFUL
-#define FT_SIZEOF_LONG  (32 / FT_CHAR_BIT)
-#elif FT_ULONG_MAX > 0xFFFFFFFFUL && FT_ULONG_MAX == 0xFFFFFFFFFFFFFFFFUL
-#define FT_SIZEOF_LONG  (64 / FT_CHAR_BIT)
-#else
-#error "Unsupported size of `long' type!"
-#endif
-
-#endif /* !FT_USE_AUTOCONF_SIZEOF_TYPES */
-
-
-  /* FT_UNUSED is a macro used to indicate that a given parameter is not  */
-  /* used -- this is only used to get rid of unpleasant compiler warnings */
-#ifndef FT_UNUSED
-#define FT_UNUSED( arg )  ( (arg) = (arg) )
-#endif
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /*                     AUTOMATIC CONFIGURATION MACROS                    */
-  /*                                                                       */
-  /* These macros are computed from the ones defined above.  Don't touch   */
-  /* their definition, unless you know precisely what you are doing.  No   */
-  /* porter should need to mess with them.                                 */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* Mac support                                                           */
-  /*                                                                       */
-  /*   This is the only necessary change, so it is defined here instead    */
-  /*   providing a new configuration file.                                 */
-  /*                                                                       */
-#if defined( __APPLE__ ) || ( defined( __MWERKS__ ) && defined( macintosh ) )
-  /* no Carbon frameworks for 64bit 10.4.x */
-  /* AvailabilityMacros.h is available since Mac OS X 10.2,        */
-  /* so guess the system version by maximum errno before inclusion */
-#include <errno.h>
-#ifdef ECANCELED /* defined since 10.2 */
-#include "AvailabilityMacros.h"
-#endif
-#if defined( __LP64__ ) && \
-    ( MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 )
-#undef FT_MACINTOSH
-#endif
-
-#elif defined( __SC__ ) || defined( __MRC__ )
-  /* Classic MacOS compilers */
-#include "ConditionalMacros.h"
-#if TARGET_OS_MAC
-#define FT_MACINTOSH 1
-#endif
-
-#endif
-
-
-  /* Fix compiler warning with sgi compiler */
-#if defined( __sgi ) && !defined( __GNUC__ )
-#if defined( _COMPILER_VERSION ) && ( _COMPILER_VERSION >= 730 )
-#pragma set woff 3505
-#endif
-#endif
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Section>                                                             */
-  /*    basic_types                                                        */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int16                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 16bit signed integer type.                         */
-  /*                                                                       */
-  typedef signed short  FT_Int16;
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt16                                                          */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 16bit unsigned integer type.                       */
-  /*                                                                       */
-  typedef unsigned short  FT_UInt16;
-
-  /* */
-
-
-  /* this #if 0 ... #endif clause is for documentation purposes */
-#if 0
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int32                                                           */
-  /*                                                                       */
-  /* <Description>                                                         */
-  /*    A typedef for a 32bit signed integer type.  The size depends on    */
-  /*    the configuration.                                                 */
-  /*                                                                       */
-  typedef signed XXX  FT_Int32;
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt32                                                          */
-  /*                                                                       */
-  /*    A typedef for a 32bit unsigned integer type.  The size depends on  */
-  /*    the configuration.                                                 */
-  /*                                                                       */
-  typedef unsigned XXX  FT_UInt32;
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_Int64                                                           */
-  /*                                                                       */
-  /*    A typedef for a 64bit signed integer type.  The size depends on    */
-  /*    the configuration.  Only defined if there is real 64bit support;   */
-  /*    otherwise, it gets emulated with a structure (if necessary).       */
-  /*                                                                       */
-  typedef signed XXX  FT_Int64;
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* <Type>                                                                */
-  /*    FT_UInt64                                                          */
-  /*                                                                       */
-  /*    A typedef for a 64bit unsigned integer type.  The size depends on  */
-  /*    the configuration.  Only defined if there is real 64bit support;   */
-  /*    otherwise, it gets emulated with a structure (if necessary).       */
-  /*                                                                       */
-  typedef unsigned XXX  FT_UInt64;
-
-  /* */
-
-#endif
-
-#if FT_SIZEOF_INT == 4
-
-  typedef signed int      FT_Int32;
-  typedef unsigned int    FT_UInt32;
-
-#elif FT_SIZEOF_LONG == 4
-
-  typedef signed long     FT_Int32;
-  typedef unsigned long   FT_UInt32;
-
-#else
-#error "no 32bit type found -- please check your configuration files"
-#endif
-
-
-  /* look up an integer type that is at least 32 bits */
-#if FT_SIZEOF_INT >= 4
-
-  typedef int            FT_Fast;
-  typedef unsigned int   FT_UFast;
-
-#elif FT_SIZEOF_LONG >= 4
-
-  typedef long           FT_Fast;
-  typedef unsigned long  FT_UFast;
-
-#endif
-
-
-  /* determine whether we have a 64-bit int type  */
-  /* (mostly for environments without `autoconf') */
-#if FT_SIZEOF_LONG == 8
-
-  /* FT_LONG64 must be defined if a 64-bit type is available */
-#define FT_LONG64
-#define FT_INT64   long
-#define FT_UINT64  unsigned long
-
-  /* we handle the LLP64 scheme separately for GCC and clang, */
-  /* suppressing the `long long' warning                      */
-#elif ( FT_SIZEOF_LONG == 4 )       && \
-      defined( HAVE_LONG_LONG_INT ) && \
-      defined( __GNUC__ )
-#pragma GCC diagnostic ignored "-Wlong-long"
-#define FT_LONG64
-#define FT_INT64   long long int
-#define FT_UINT64  unsigned long long int
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* A 64-bit data type may create compilation problems if you compile     */
-  /* in strict ANSI mode.  To avoid them, we disable other 64-bit data     */
-  /* types if __STDC__ is defined.  You can however ignore this rule       */
-  /* by defining the FT_CONFIG_OPTION_FORCE_INT64 configuration macro.     */
-  /*                                                                       */
-#elif !defined( __STDC__ ) || defined( FT_CONFIG_OPTION_FORCE_INT64 )
-
-#if defined( __STDC_VERSION__ ) && __STDC_VERSION__ >= 199901L
-
-#define FT_LONG64
-#define FT_INT64   long long int
-#define FT_UINT64  unsigned long long int
-
-#elif defined( _MSC_VER ) && _MSC_VER >= 900  /* Visual C++ (and Intel C++) */
-
-  /* this compiler provides the __int64 type */
-#define FT_LONG64
-#define FT_INT64   __int64
-#define FT_UINT64  unsigned __int64
-
-#elif defined( __BORLANDC__ )  /* Borland C++ */
-
-  /* XXXX: We should probably check the value of __BORLANDC__ in order */
-  /*       to test the compiler version.                               */
-
-  /* this compiler provides the __int64 type */
-#define FT_LONG64
-#define FT_INT64   __int64
-#define FT_UINT64  unsigned __int64
-
-#elif defined( __WATCOMC__ )   /* Watcom C++ */
-
-  /* Watcom doesn't provide 64-bit data types */
-
-#elif defined( __MWERKS__ )    /* Metrowerks CodeWarrior */
-
-#define FT_LONG64
-#define FT_INT64   long long int
-#define FT_UINT64  unsigned long long int
-
-#elif defined( __GNUC__ )
-
-  /* GCC provides the `long long' type */
-#define FT_LONG64
-#define FT_INT64   long long int
-#define FT_UINT64  unsigned long long int
-
-#endif /* __STDC_VERSION__ >= 199901L */
-
-#endif /* FT_SIZEOF_LONG == 8 */
-
-#ifdef FT_LONG64
-  typedef FT_INT64   FT_Int64;
-  typedef FT_UINT64  FT_UInt64;
-#endif
-
-
-#ifdef _WIN64
-  /* only 64bit Windows uses the LLP64 data model, i.e., */
-  /* 32bit integers, 64bit pointers                      */
-#define FT_UINT_TO_POINTER( x ) (void*)(unsigned __int64)(x)
-#else
-#define FT_UINT_TO_POINTER( x ) (void*)(unsigned long)(x)
-#endif
-
-
-  /*************************************************************************/
-  /*                                                                       */
-  /* miscellaneous                                                         */
-  /*                                                                       */
-  /*************************************************************************/
-
-
-#define FT_BEGIN_STMNT  do {
-#define FT_END_STMNT    } while ( 0 )
-#define FT_DUMMY_STMNT  FT_BEGIN_STMNT FT_END_STMNT
-
-
-  /* typeof condition taken from gnulib's `intprops.h' header file */
-#if ( ( defined( __GNUC__ ) && __GNUC__ >= 2 )                       || \
-      ( defined( __IBMC__ ) && __IBMC__ >= 1210 &&                      \
-        defined( __IBM__TYPEOF__ ) )                                 || \
-      ( defined( __SUNPRO_C ) && __SUNPRO_C >= 0x5110 && !__STDC__ ) )
-#define FT_TYPEOF( type )  ( __typeof__ ( type ) )
-#else
-#define FT_TYPEOF( type )  /* empty */
-#endif
-
-
-  /* Use FT_LOCAL and FT_LOCAL_DEF to declare and define, respectively, */
-  /* a function that gets used only within the scope of a module.       */
-  /* Normally, both the header and source code files for such a         */
-  /* function are within a single module directory.                     */
-  /*                                                                    */
-  /* Intra-module arrays should be tagged with FT_LOCAL_ARRAY and       */
-  /* FT_LOCAL_ARRAY_DEF.                                                */
-  /*                                                                    */
-#ifdef FT_MAKE_OPTION_SINGLE_OBJECT
-
-#define FT_LOCAL( x )      static  x
-#define FT_LOCAL_DEF( x )  static  x
-
-#else
-
-#ifdef __cplusplus
-#define FT_LOCAL( x )      extern "C"  x
-#define FT_LOCAL_DEF( x )  extern "C"  x
-#else
-#define FT_LOCAL( x )      extern  x
-#define FT_LOCAL_DEF( x )  x
-#endif
-
-#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */
-
-#define FT_LOCAL_ARRAY( x )      extern const  x
-#define FT_LOCAL_ARRAY_DEF( x )  const  x
-
-
-  /* Use FT_BASE and FT_BASE_DEF to declare and define, respectively, */
-  /* functions that are used in more than a single module.  In the    */
-  /* current setup this implies that the declaration is in a header   */
-  /* file in the `include/freetype/internal' directory, and the       */
-  /* function body is in a file in `src/base'.                        */
-  /*                                                                  */
-#ifndef FT_BASE
-
-#ifdef __cplusplus
-#define FT_BASE( x )  extern "C"  x
-#else
-#define FT_BASE( x )  extern  x
-#endif
-
-#endif /* !FT_BASE */
-
-
-#ifndef FT_BASE_DEF
-
-#ifdef __cplusplus
-#define FT_BASE_DEF( x )  x
-#else
-#define FT_BASE_DEF( x )  x
-#endif
-
-#endif /* !FT_BASE_DEF */
-
-
-  /*   When compiling FreeType as a DLL or DSO with hidden visibility      */
-  /*   some systems/compilers need a special attribute in front OR after   */
-  /*   the return type of function declarations.                           */
-  /*                                                                       */
-  /*   Two macros are used within the FreeType source code to define       */
-  /*   exported library functions: FT_EXPORT and FT_EXPORT_DEF.            */
-  /*                                                                       */
-  /*     FT_EXPORT( return_type )                                          */
-  /*                                                                       */
-  /*       is used in a function declaration, as in                        */
-  /*                                                                       */
-  /*         FT_EXPORT( FT_Error )                                         */
-  /*         FT_Init_FreeType( FT_Library*  alibrary );                    */
-  /*                                                                       */
-  /*                                                                       */
-  /*     FT_EXPORT_DEF( return_type )                                      */
-  /*                                                                       */
-  /*       is used in a function definition, as in                         */
-  /*                                                                       */
-  /*         FT_EXPORT_DEF( FT_Error )                                     */
-  /*         FT_Init_FreeType( FT_Library*  alibrary )                     */
-  /*         {                                                             */
-  /*           ... some code ...                                           */
-  /*           return FT_Err_Ok;                                           */
-  /*         }                                                             */
-  /*                                                                       */
-  /*   You can provide your own implementation of FT_EXPORT and            */
-  /*   FT_EXPORT_DEF here if you want.                                     */
-  /*                                                                       */
-  /*   To export a variable, use FT_EXPORT_VAR.                         

(Patch may be truncated, please check the link at the top of this post.)