SDL_ttf: applied minor compatibility patches to freetype from mainstream.

From 07e224aa3415d29af232f491c7c593470dc7e8f0 Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Wed, 16 Mar 2022 15:51:50 +0300
Subject: [PATCH] applied minor compatibility patches to freetype from
 mainstream.

---
 .../include/freetype/config/integer-types.h    |  5 +++--
 .../freetype/internal/compiler-macros.h        |  6 ++++--
 .../include/freetype/internal/ftcalc.h         | 13 +++++++++++++
 external/freetype-2.11.1/src/sdf/ftbsdf.c      | 18 +++++++++---------
 4 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/external/freetype-2.11.1/include/freetype/config/integer-types.h b/external/freetype-2.11.1/include/freetype/config/integer-types.h
index 5ef09f1..3b902fc 100644
--- a/external/freetype-2.11.1/include/freetype/config/integer-types.h
+++ b/external/freetype-2.11.1/include/freetype/config/integer-types.h
@@ -221,9 +221,10 @@
 #define FT_INT64   __int64
 #define FT_UINT64  unsigned __int64
 
-#elif defined( __WATCOMC__ )   /* Watcom C++ */
+#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1100  /* Watcom C++ */
 
-  /* Watcom doesn't provide 64-bit data types */
+#define FT_INT64   long long int
+#define FT_UINT64  unsigned long long int
 
 #elif defined( __MWERKS__ )    /* Metrowerks CodeWarrior */
 
diff --git a/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h b/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h
index d8b61b3..1768e6e 100644
--- a/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h
+++ b/external/freetype-2.11.1/include/freetype/internal/compiler-macros.h
@@ -299,10 +299,12 @@ FT_BEGIN_HEADER
 #define FT_CALLBACK_DEF( x )  static  x
 #endif
 
-#if defined( __i386__ )
+#if defined( __GNUC__ ) && defined( __i386__ )
 #define FT_COMPARE_DEF( x )  FT_CALLBACK_DEF( x ) __attribute__(( cdecl ))
-#elif defined( _M_IX86 )
+#elif defined( _MSC_VER ) && defined( _M_IX86 )
 #define FT_COMPARE_DEF( x )  FT_CALLBACK_DEF( x ) __cdecl
+#elif defined( __WATCOMC__ ) && __WATCOMC__ >= 1240
+#define FT_COMPARE_DEF( x )  FT_CALLBACK_DEF( x ) __watcall
 #else
 #define FT_COMPARE_DEF( x )  FT_CALLBACK_DEF( x )
 #endif
diff --git a/external/freetype-2.11.1/include/freetype/internal/ftcalc.h b/external/freetype-2.11.1/include/freetype/internal/ftcalc.h
index f88e055..ccd0c09 100644
--- a/external/freetype-2.11.1/include/freetype/internal/ftcalc.h
+++ b/external/freetype-2.11.1/include/freetype/internal/ftcalc.h
@@ -408,6 +408,19 @@ FT_BEGIN_HEADER
 
 #endif
 
+#elif defined( __WATCOMC__ ) && defined( __386__ )
+
+  extern __inline FT_Int32
+  FT_MSB_i386( FT_UInt32  x );
+
+#pragma aux FT_MSB_i386 =     \
+  "bsr eax, eax"              \
+  parm [eax] nomemory         \
+  value [eax]                 \
+  modify exact [eax] nomemory;
+
+#define FT_MSB( x )  FT_MSB_i386( x )
+
 #elif defined( __DECC ) || defined( __DECCXX )
 
 #include <builtins.h>
diff --git a/external/freetype-2.11.1/src/sdf/ftbsdf.c b/external/freetype-2.11.1/src/sdf/ftbsdf.c
index 8da5c9d..0144a15 100644
--- a/external/freetype-2.11.1/src/sdf/ftbsdf.c
+++ b/external/freetype-2.11.1/src/sdf/ftbsdf.c
@@ -177,11 +177,11 @@
    *
    * @Fields:
    *   dist ::
-   *     Vector length of the `near` parameter.  Can be squared or absolute
+   *     Vector length of the `prox` parameter.  Can be squared or absolute
    *     depending on the `USE_SQUARED_DISTANCES` macro defined in file
    *     `ftsdfcommon.h`.
    *
-   *   near ::
+   *   prox ::
    *     Vector to the nearest edge.  Can also be interpreted as shortest
    *     distance of a point.
    *
@@ -194,7 +194,7 @@
   typedef struct  ED_
   {
     FT_16D16      dist;
-    FT_16D16_Vec  near;
+    FT_16D16_Vec  prox;
     FT_Byte       alpha;
 
   } ED;
@@ -595,18 +595,18 @@
                            worker->rows ) )
         {
           /* approximate the edge distance for edge pixels */
-          ed[index].near = compute_edge_distance( ed + index,
+          ed[index].prox = compute_edge_distance( ed + index,
                                                   i, j,
                                                   worker->width,
                                                   worker->rows );
-          ed[index].dist = VECTOR_LENGTH_16D16( ed[index].near );
+          ed[index].dist = VECTOR_LENGTH_16D16( ed[index].prox );
         }
         else
         {
           /* for non-edge pixels assign far away distances */
           ed[index].dist   = 400 * ONE;
-          ed[index].near.x = 200 * ONE;
-          ed[index].near.y = 200 * ONE;
+          ed[index].prox.x = 200 * ONE;
+          ed[index].prox.y = 200 * ONE;
         }
       }
     }
@@ -873,7 +873,7 @@
 
     if ( dist < current->dist )
     {
-      dist_vec = to_check->near;
+      dist_vec = to_check->prox;
 
       dist_vec.x += x_offset * ONE;
       dist_vec.y += y_offset * ONE;
@@ -882,7 +882,7 @@
       if ( dist < current->dist )
       {
         current->dist = dist;
-        current->near = dist_vec;
+        current->prox = dist_vec;
       }
     }
   }