From 11ea89b51c8a3e1d81e0dbec47d6909ff60c9a1d Mon Sep 17 00:00:00 2001 From: Ozkan Sezer Date: Fri, 14 Jan 2022 22:07:44 -0500 Subject: [PATCH] Add Watcom C/C++ support. * include/freetype/config/integer-types.h: Make sure `long long` is used then available. * include/freetype/internal/ftcalc.h (FT_MSB): Add Watcom C/C++ pragma. --- include/freetype/config/integer-types.h | 5 +++-- include/freetype/internal/ftcalc.h | 13 +++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/include/freetype/config/integer-types.h b/include/freetype/config/integer-types.h index b772845c4..d9d2638d1 100644 --- a/include/freetype/config/integer-types.h +++ b/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/include/freetype/internal/ftcalc.h b/include/freetype/internal/ftcalc.h index 46e7f222d..e6a87db94 100644 --- a/include/freetype/internal/ftcalc.h +++ b/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