From 719312e763e90647e53acf0ece8121833a0d56cf Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Fri, 21 Oct 2022 15:04:54 -0400 Subject: [PATCH 01/10] Update freetype.py to 2.12.1 (#13) --- tools/ports/freetype.py | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index 05d9a85bcb13c..702ca2f84c989 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -5,8 +5,8 @@ import os -TAG = 'version_1' -HASH = '0d0b1280ba0501ad0a23cf1daa1f86821c722218b59432734d3087a89acd22aabd5c3e5e1269700dcd41e87073046e906060f167c032eb91a3ac8c5808a02783' +TAG = '2-12-1' +HASH = '3ef3e47752b7c3cd158c738d7e0194f1c9f97ac85c754b02be6ee0f7999c3c19050f713d1e975f5310a4689337463e7b54450ef62e02c3f09864f4c6b13740d9' def needed(settings): @@ -14,47 +14,38 @@ def needed(settings): def get(ports, settings, shared): - ports.fetch_project('freetype', 'https://github.com/emscripten-ports/FreeType/archive/' + TAG + '.zip', 'FreeType-' + TAG, sha512hash=HASH) + ports.fetch_project('freetype', 'https://github.com/freetype/freetype/archive/refs/tags/VER-' + TAG + '.zip', 'FreeType-' + TAG, sha512hash=HASH) def create(final): - source_path = os.path.join(ports.get_dir(), 'freetype', 'FreeType-' + TAG) + source_path = os.path.join(ports.get_dir(), 'freetype', 'freetype-VER-' + TAG) ports.write_file(os.path.join(source_path, 'include/ftconfig.h'), ftconf_h) ports.install_header_dir(os.path.join(source_path, 'include'), target=os.path.join('freetype2')) + + with open(os.path.join(source_path, 'include', 'freetype', 'config','ftoption.h'), 'a') as ftheader: + ftheader.write('#define FT_CONFIG_OPTION_SYSTEM_ZLIB') # build srcs = ['src/autofit/autofit.c', - 'src/base/ftadvanc.c', + 'src/base/ftbase.c', 'src/base/ftbbox.c', 'src/base/ftbdf.c', 'src/base/ftbitmap.c', - 'src/base/ftcalc.c', 'src/base/ftcid.c', - 'src/base/ftdbgmem.c', 'src/base/ftdebug.c', - 'src/base/ftfntfmt.c', 'src/base/ftfstype.c', 'src/base/ftgasp.c', - 'src/base/ftgloadr.c', 'src/base/ftglyph.c', 'src/base/ftgxval.c', 'src/base/ftinit.c', - 'src/base/ftlcdfil.c', 'src/base/ftmm.c', - 'src/base/ftobjs.c', 'src/base/ftotval.c', - 'src/base/ftoutln.c', 'src/base/ftpatent.c', 'src/base/ftpfr.c', - 'src/base/ftrfork.c', - 'src/base/ftsnames.c', - 'src/base/ftstream.c', 'src/base/ftstroke.c', - 'src/base/ftsynth.c', 'src/base/ftsystem.c', - 'src/base/fttrigon.c', + 'src/base/ftsynth.c', 'src/base/fttype1.c', - 'src/base/ftutil.c', 'src/base/ftwinfnt.c', 'src/bdf/bdf.c', 'src/bzip2/ftbzip2.c', @@ -67,10 +58,12 @@ def create(final): 'src/pfr/pfr.c', 'src/psaux/psaux.c', 'src/pshinter/pshinter.c', - 'src/psnames/psmodule.c', + 'src/psnames/psnames.c', 'src/raster/raster.c', + 'src/sdf/sdf.c', 'src/sfnt/sfnt.c', 'src/smooth/smooth.c', + 'src/svg/ftsvg.c', 'src/truetype/truetype.c', 'src/type1/type1.c', 'src/type42/type42.c', @@ -153,6 +146,10 @@ def show(): FT_BEGIN_HEADER +/* Requires system zlib */ +#define FT_REQUIRE_ZLIB +#define FT_CONFIG_OPTION_SYSTEM_ZLIB + /*************************************************************************/ /* */ From 8b95490f342c22cf23bd53a1813ede90fa68c17d Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Fri, 21 Oct 2022 15:11:29 -0400 Subject: [PATCH 02/10] Fixing flake8 messages --- tools/ports/freetype.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index 702ca2f84c989..5be20b310d382 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -21,8 +21,8 @@ def create(final): ports.write_file(os.path.join(source_path, 'include/ftconfig.h'), ftconf_h) ports.install_header_dir(os.path.join(source_path, 'include'), target=os.path.join('freetype2')) - - with open(os.path.join(source_path, 'include', 'freetype', 'config','ftoption.h'), 'a') as ftheader: + + with open(os.path.join(source_path, 'include', 'freetype', 'config', 'ftoption.h'), 'a') as ftheader: ftheader.write('#define FT_CONFIG_OPTION_SYSTEM_ZLIB') # build From 9e27ee22334a4c6e9fe36afed223fd4986059e16 Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Mon, 24 Oct 2022 13:42:46 -0400 Subject: [PATCH 03/10] Removed extra ftconf.h lines moved VER- into tag --- tools/ports/freetype.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index 5be20b310d382..f5da2de510d06 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -5,7 +5,7 @@ import os -TAG = '2-12-1' +TAG = 'VER-2-12-1' HASH = '3ef3e47752b7c3cd158c738d7e0194f1c9f97ac85c754b02be6ee0f7999c3c19050f713d1e975f5310a4689337463e7b54450ef62e02c3f09864f4c6b13740d9' @@ -14,14 +14,15 @@ def needed(settings): def get(ports, settings, shared): - ports.fetch_project('freetype', 'https://github.com/freetype/freetype/archive/refs/tags/VER-' + TAG + '.zip', 'FreeType-' + TAG, sha512hash=HASH) + ports.fetch_project('freetype', 'https://github.com/freetype/freetype/archive/refs/tags/' + TAG + '.zip', 'FreeType-' + TAG, sha512hash=HASH) def create(final): - source_path = os.path.join(ports.get_dir(), 'freetype', 'freetype-VER-' + TAG) + source_path = os.path.join(ports.get_dir(), 'freetype', 'freetype-' + TAG) ports.write_file(os.path.join(source_path, 'include/ftconfig.h'), ftconf_h) ports.install_header_dir(os.path.join(source_path, 'include'), target=os.path.join('freetype2')) + # fixes freetype + zlib duplicate symbols errors with open(os.path.join(source_path, 'include', 'freetype', 'config', 'ftoption.h'), 'a') as ftheader: ftheader.write('#define FT_CONFIG_OPTION_SYSTEM_ZLIB') @@ -146,10 +147,6 @@ def show(): FT_BEGIN_HEADER -/* Requires system zlib */ -#define FT_REQUIRE_ZLIB -#define FT_CONFIG_OPTION_SYSTEM_ZLIB - /*************************************************************************/ /* */ From 2dd8897158f08a3c140fc70951fb378613760a8b Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Mon, 24 Oct 2022 15:08:19 -0400 Subject: [PATCH 04/10] Removing unneeded ftconfig.h creation --- tools/ports/freetype.py | 501 ---------------------------------------- 1 file changed, 501 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index f5da2de510d06..ea6c18fcee3ce 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -18,7 +18,6 @@ def get(ports, settings, shared): def create(final): source_path = os.path.join(ports.get_dir(), 'freetype', 'freetype-' + TAG) - ports.write_file(os.path.join(source_path, 'include/ftconfig.h'), ftconf_h) ports.install_header_dir(os.path.join(source_path, 'include'), target=os.path.join('freetype2')) @@ -99,503 +98,3 @@ def process_args(ports): def show(): return 'freetype (USE_FREETYPE=1; freetype license)' - - -ftconf_h = r'''/***************************************************************************/ -/* */ -/* ftconfig.in */ -/* */ -/* UNIX-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2015 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/', and contains */ - /* system-specific files that are always included first when building */ - /* the library. */ - /* */ - /*************************************************************************/ - - -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ - -#include -#include -#include - - -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/' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ - - -#undef HAVE_UNISTD_H -#undef HAVE_FCNTL_H -#undef HAVE_STDINT_H - - - /* 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 - -#undef SIZEOF_INT -#undef SIZEOF_LONG -#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/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 -#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 - - - /*************************************************************************/ - /* */ - /*
*/ - /* basic_types */ - /* */ - /*************************************************************************/ - - - /*************************************************************************/ - /* */ - /* */ - /* FT_Int16 */ - /* */ - /* */ - /* A typedef for a 16bit signed integer type. */ - /* */ - typedef signed short FT_Int16; - - - /*************************************************************************/ - /* */ - /* */ - /* FT_UInt16 */ - /* */ - /* */ - /* A typedef for a 16bit unsigned integer type. */ - /* */ - typedef unsigned short FT_UInt16; - - /* */ - - - /* this #if 0 ... #endif clause is for documentation purposes */ -#if 0 - - /*************************************************************************/ - /* */ - /* */ - /* FT_Int32 */ - /* */ - /* */ - /* A typedef for a 32bit signed integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef signed XXX FT_Int32; - - - /*************************************************************************/ - /* */ - /* */ - /* FT_UInt32 */ - /* */ - /* A typedef for a 32bit unsigned integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef unsigned XXX FT_UInt32; - - - /*************************************************************************/ - /* */ - /* */ - /* 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; - - - /*************************************************************************/ - /* */ - /* */ - /* 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 for platforms 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 - - /*************************************************************************/ - /* */ - /* 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( _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 /* _MSC_VER */ - -#endif /* FT_SIZEOF_LONG == 8 */ - -#ifdef FT_LONG64 - typedef FT_INT64 FT_Int64; - typedef FT_UINT64 FT_UInt64; -#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 ( __GNUC__ >= 2 || \ - defined( __IBM__TYPEOF__ ) || \ - ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) -#define TYPEOF( type ) (__typeof__ (type)) -#else -#define TYPEOF( type ) /* empty */ -#endif - - -#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 - - -#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 */ - - -#ifndef FT_EXPORT - -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif - -#endif /* !FT_EXPORT */ - - -#ifndef FT_EXPORT_DEF - -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif - -#endif /* !FT_EXPORT_DEF */ - - -#ifndef FT_EXPORT_VAR - -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif - -#endif /* !FT_EXPORT_VAR */ - - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ - -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ - - -FT_END_HEADER - - -#endif /* __FTCONFIG_H__ */ - - -/* END */ -''' From 0002fc7fe42ca3e7b387b70f0b35d8e81a455acb Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Mon, 24 Oct 2022 15:35:59 -0400 Subject: [PATCH 05/10] Reverting the ftconfig.h removal --- tools/ports/freetype.py | 380 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 380 insertions(+) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index ea6c18fcee3ce..e1c1232cf6011 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -18,6 +18,7 @@ def get(ports, settings, shared): def create(final): source_path = os.path.join(ports.get_dir(), 'freetype', 'freetype-' + TAG) + ports.write_file(os.path.join(source_path, 'include/ftconfig.h'), ftconf_h) ports.install_header_dir(os.path.join(source_path, 'include'), target=os.path.join('freetype2')) @@ -98,3 +99,382 @@ def process_args(ports): def show(): return 'freetype (USE_FREETYPE=1; freetype license)' + + +ftconf_h = r'''/***************************************************************************/ +/* */ +/* ftconfig.in */ +/* */ +/* UNIX-specific configuration file (specification only). */ +/* */ +/* Copyright 1996-2015 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/', and contains */ + /* system-specific files that are always included first when building */ + /* the library. */ + /* */ + /*************************************************************************/ +#ifndef __FTCONFIG_H__ +#define __FTCONFIG_H__ +#include +#include +#include +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/' directory, and edit it to port the engine. */ + /* */ + /*************************************************************************/ +#undef HAVE_UNISTD_H +#undef HAVE_FCNTL_H +#undef HAVE_STDINT_H + /* 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 +#undef SIZEOF_INT +#undef SIZEOF_LONG +#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/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 +#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 + /*************************************************************************/ + /* */ + /*
*/ + /* basic_types */ + /* */ + /*************************************************************************/ + /*************************************************************************/ + /* */ + /* */ + /* FT_Int16 */ + /* */ + /* */ + /* A typedef for a 16bit signed integer type. */ + /* */ + typedef signed short FT_Int16; + /*************************************************************************/ + /* */ + /* */ + /* FT_UInt16 */ + /* */ + /* */ + /* A typedef for a 16bit unsigned integer type. */ + /* */ + typedef unsigned short FT_UInt16; + /* */ + /* this #if 0 ... #endif clause is for documentation purposes */ +#if 0 + /*************************************************************************/ + /* */ + /* */ + /* FT_Int32 */ + /* */ + /* */ + /* A typedef for a 32bit signed integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef signed XXX FT_Int32; + /*************************************************************************/ + /* */ + /* */ + /* FT_UInt32 */ + /* */ + /* A typedef for a 32bit unsigned integer type. The size depends on */ + /* the configuration. */ + /* */ + typedef unsigned XXX FT_UInt32; + /*************************************************************************/ + /* */ + /* */ + /* 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; + /*************************************************************************/ + /* */ + /* */ + /* 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 for platforms 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 + /*************************************************************************/ + /* */ + /* 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( _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 /* _MSC_VER */ +#endif /* FT_SIZEOF_LONG == 8 */ +#ifdef FT_LONG64 + typedef FT_INT64 FT_Int64; + typedef FT_UINT64 FT_UInt64; +#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 ( __GNUC__ >= 2 || \ + defined( __IBM__TYPEOF__ ) || \ + ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) +#define TYPEOF( type ) (__typeof__ (type)) +#else +#define TYPEOF( type ) /* empty */ +#endif +#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 +#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 */ +#ifndef FT_EXPORT +#ifdef __cplusplus +#define FT_EXPORT( x ) extern "C" x +#else +#define FT_EXPORT( x ) extern x +#endif +#endif /* !FT_EXPORT */ +#ifndef FT_EXPORT_DEF +#ifdef __cplusplus +#define FT_EXPORT_DEF( x ) extern "C" x +#else +#define FT_EXPORT_DEF( x ) extern x +#endif +#endif /* !FT_EXPORT_DEF */ +#ifndef FT_EXPORT_VAR +#ifdef __cplusplus +#define FT_EXPORT_VAR( x ) extern "C" x +#else +#define FT_EXPORT_VAR( x ) extern x +#endif +#endif /* !FT_EXPORT_VAR */ + /* The following macros are needed to compile the library with a */ + /* C++ compiler and with 16bit compilers. */ + /* */ + /* This is special. Within C++, you must specify `extern "C"' for */ + /* functions which are used via function pointers, and you also */ + /* must do that for structures which contain function pointers to */ + /* assure C linkage -- it's not possible to have (local) anonymous */ + /* functions which are accessed by (global) function pointers. */ + /* */ + /* */ + /* FT_CALLBACK_DEF is used to _define_ a callback function. */ + /* */ + /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ + /* contains pointers to callback functions. */ + /* */ + /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ + /* that contains pointers to callback functions. */ + /* */ + /* */ + /* Some 16bit compilers have to redefine these macros to insert */ + /* the infamous `_cdecl' or `__fastcall' declarations. */ + /* */ +#ifndef FT_CALLBACK_DEF +#ifdef __cplusplus +#define FT_CALLBACK_DEF( x ) extern "C" x +#else +#define FT_CALLBACK_DEF( x ) static x +#endif +#endif /* FT_CALLBACK_DEF */ +#ifndef FT_CALLBACK_TABLE +#ifdef __cplusplus +#define FT_CALLBACK_TABLE extern "C" +#define FT_CALLBACK_TABLE_DEF extern "C" +#else +#define FT_CALLBACK_TABLE extern +#define FT_CALLBACK_TABLE_DEF /* nothing */ +#endif +#endif /* FT_CALLBACK_TABLE */ +FT_END_HEADER +#endif /* __FTCONFIG_H__ */ +/* END */ +''' From 70dbd909c2782cfe3581a609e60f8237c0d7e21b Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Tue, 25 Oct 2022 09:43:29 -0400 Subject: [PATCH 06/10] Compiling right svg file --- tools/ports/freetype.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index e1c1232cf6011..d3a8625cfb88f 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -64,7 +64,7 @@ def create(final): 'src/sdf/sdf.c', 'src/sfnt/sfnt.c', 'src/smooth/smooth.c', - 'src/svg/ftsvg.c', + 'src/svg/svg.c', 'src/truetype/truetype.c', 'src/type1/type1.c', 'src/type42/type42.c', From 63cf5f3737d4fea0c36a7aea1a4bd1eaa8044070 Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Tue, 25 Oct 2022 10:47:10 -0400 Subject: [PATCH 07/10] Adding explicit deps for zlib --- tools/ports/freetype.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index d3a8625cfb88f..3aedeeefc523f 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -8,6 +8,8 @@ TAG = 'VER-2-12-1' HASH = '3ef3e47752b7c3cd158c738d7e0194f1c9f97ac85c754b02be6ee0f7999c3c19050f713d1e975f5310a4689337463e7b54450ef62e02c3f09864f4c6b13740d9' +deps = ['zlib'] + def needed(settings): return settings.USE_FREETYPE From 291d5eb4d2b9762f50b3e805fc70221cec09b5b5 Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Tue, 25 Oct 2022 16:09:07 -0400 Subject: [PATCH 08/10] Using builds/unix/ftsystem.c The defines don't work in ftconfig.h, but they work in ftoption.h. --- tools/ports/freetype.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index 3aedeeefc523f..b20561f075748 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -26,10 +26,14 @@ def create(final): # fixes freetype + zlib duplicate symbols errors with open(os.path.join(source_path, 'include', 'freetype', 'config', 'ftoption.h'), 'a') as ftheader: - ftheader.write('#define FT_CONFIG_OPTION_SYSTEM_ZLIB') + ftheader.write("#define FT_CONFIG_OPTION_SYSTEM_ZLIB\n") + ftheader.write("#define HAVE_UNISTD_H\n") + ftheader.write("#define HAVE_FCNTL_H\n") + ftheader.write("#define HAVE_STDINT_H\n") # build - srcs = ['src/autofit/autofit.c', + srcs = ['builds/unix/ftsystem.c', + 'src/autofit/autofit.c', 'src/base/ftbase.c', 'src/base/ftbbox.c', 'src/base/ftbdf.c', @@ -46,7 +50,6 @@ def create(final): 'src/base/ftpatent.c', 'src/base/ftpfr.c', 'src/base/ftstroke.c', - 'src/base/ftsystem.c', 'src/base/ftsynth.c', 'src/base/fttype1.c', 'src/base/ftwinfnt.c', @@ -151,8 +154,8 @@ def show(): /* `builds/' directory, and edit it to port the engine. */ /* */ /*************************************************************************/ -#undef HAVE_UNISTD_H -#undef HAVE_FCNTL_H +#def HAVE_UNISTD_H +#def HAVE_FCNTL_H #undef HAVE_STDINT_H /* 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 */ From 48de39faa45223b45daeefd7384a4f7157214cbf Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Tue, 25 Oct 2022 16:23:43 -0400 Subject: [PATCH 09/10] Removing the unix defines from ftconfig.h --- tools/ports/freetype.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index b20561f075748..519ecf623f9c6 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -154,9 +154,7 @@ def show(): /* `builds/' directory, and edit it to port the engine. */ /* */ /*************************************************************************/ -#def HAVE_UNISTD_H -#def HAVE_FCNTL_H -#undef HAVE_STDINT_H + /* 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 */ From 2a4432c4912984b1977072e73cfc532f9661f91c Mon Sep 17 00:00:00 2001 From: HCLJason <79225526+HCLJason@users.noreply.github.com> Date: Wed, 26 Oct 2022 10:57:00 -0400 Subject: [PATCH 10/10] Using ftconfig.h from CMake --- tools/ports/freetype.py | 382 ++-------------------------------------- 1 file changed, 10 insertions(+), 372 deletions(-) diff --git a/tools/ports/freetype.py b/tools/ports/freetype.py index 519ecf623f9c6..fbe953ff4a3e7 100644 --- a/tools/ports/freetype.py +++ b/tools/ports/freetype.py @@ -107,377 +107,15 @@ def show(): ftconf_h = r'''/***************************************************************************/ -/* */ -/* ftconfig.in */ -/* */ -/* UNIX-specific configuration file (specification only). */ -/* */ -/* Copyright 1996-2015 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/', and contains */ - /* system-specific files that are always included first when building */ - /* the library. */ - /* */ - /*************************************************************************/ -#ifndef __FTCONFIG_H__ -#define __FTCONFIG_H__ +#ifndef FTCONFIG_H_ +#define FTCONFIG_H_ + #include -#include -#include -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/' directory, and edit it to port the engine. */ - /* */ - /*************************************************************************/ +#include FT_CONFIG_OPTIONS_H +#include FT_CONFIG_STANDARD_LIBRARY_H + +#include +#include +#include - /* 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 -#undef SIZEOF_INT -#undef SIZEOF_LONG -#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/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 -#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 - /*************************************************************************/ - /* */ - /*
*/ - /* basic_types */ - /* */ - /*************************************************************************/ - /*************************************************************************/ - /* */ - /* */ - /* FT_Int16 */ - /* */ - /* */ - /* A typedef for a 16bit signed integer type. */ - /* */ - typedef signed short FT_Int16; - /*************************************************************************/ - /* */ - /* */ - /* FT_UInt16 */ - /* */ - /* */ - /* A typedef for a 16bit unsigned integer type. */ - /* */ - typedef unsigned short FT_UInt16; - /* */ - /* this #if 0 ... #endif clause is for documentation purposes */ -#if 0 - /*************************************************************************/ - /* */ - /* */ - /* FT_Int32 */ - /* */ - /* */ - /* A typedef for a 32bit signed integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef signed XXX FT_Int32; - /*************************************************************************/ - /* */ - /* */ - /* FT_UInt32 */ - /* */ - /* A typedef for a 32bit unsigned integer type. The size depends on */ - /* the configuration. */ - /* */ - typedef unsigned XXX FT_UInt32; - /*************************************************************************/ - /* */ - /* */ - /* 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; - /*************************************************************************/ - /* */ - /* */ - /* 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 for platforms 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 - /*************************************************************************/ - /* */ - /* 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( _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 /* _MSC_VER */ -#endif /* FT_SIZEOF_LONG == 8 */ -#ifdef FT_LONG64 - typedef FT_INT64 FT_Int64; - typedef FT_UINT64 FT_UInt64; -#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 ( __GNUC__ >= 2 || \ - defined( __IBM__TYPEOF__ ) || \ - ( __SUNPRO_C >= 0x5110 && !__STDC__ ) ) -#define TYPEOF( type ) (__typeof__ (type)) -#else -#define TYPEOF( type ) /* empty */ -#endif -#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 -#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 */ -#ifndef FT_EXPORT -#ifdef __cplusplus -#define FT_EXPORT( x ) extern "C" x -#else -#define FT_EXPORT( x ) extern x -#endif -#endif /* !FT_EXPORT */ -#ifndef FT_EXPORT_DEF -#ifdef __cplusplus -#define FT_EXPORT_DEF( x ) extern "C" x -#else -#define FT_EXPORT_DEF( x ) extern x -#endif -#endif /* !FT_EXPORT_DEF */ -#ifndef FT_EXPORT_VAR -#ifdef __cplusplus -#define FT_EXPORT_VAR( x ) extern "C" x -#else -#define FT_EXPORT_VAR( x ) extern x -#endif -#endif /* !FT_EXPORT_VAR */ - /* The following macros are needed to compile the library with a */ - /* C++ compiler and with 16bit compilers. */ - /* */ - /* This is special. Within C++, you must specify `extern "C"' for */ - /* functions which are used via function pointers, and you also */ - /* must do that for structures which contain function pointers to */ - /* assure C linkage -- it's not possible to have (local) anonymous */ - /* functions which are accessed by (global) function pointers. */ - /* */ - /* */ - /* FT_CALLBACK_DEF is used to _define_ a callback function. */ - /* */ - /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ - /* contains pointers to callback functions. */ - /* */ - /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ - /* that contains pointers to callback functions. */ - /* */ - /* */ - /* Some 16bit compilers have to redefine these macros to insert */ - /* the infamous `_cdecl' or `__fastcall' declarations. */ - /* */ -#ifndef FT_CALLBACK_DEF -#ifdef __cplusplus -#define FT_CALLBACK_DEF( x ) extern "C" x -#else -#define FT_CALLBACK_DEF( x ) static x -#endif -#endif /* FT_CALLBACK_DEF */ -#ifndef FT_CALLBACK_TABLE -#ifdef __cplusplus -#define FT_CALLBACK_TABLE extern "C" -#define FT_CALLBACK_TABLE_DEF extern "C" -#else -#define FT_CALLBACK_TABLE extern -#define FT_CALLBACK_TABLE_DEF /* nothing */ -#endif -#endif /* FT_CALLBACK_TABLE */ -FT_END_HEADER -#endif /* __FTCONFIG_H__ */ -/* END */ -''' +#endif /* FTCONFIG_H_ */'''