Better support of LLP64 systems with gcc (and clang).

* builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.

* builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
This commit is contained in:
Werner Lemberg 2016-11-17 12:00:20 +01:00
parent 9e7748f55c
commit 7815050334
3 changed files with 22 additions and 2 deletions

View File

@ -1,3 +1,12 @@
2016-11-17 Werner Lemberg <wl@gnu.org>
Better support of LLP64 systems with gcc (and clang).
* builds/unix/configure.raw: Call `AC_TYPE_LONG_LONG_INT'.
* builds/unix/ftconfig.in (FT_LONG64): Enable for LLP64 systems (and
suppress warnings) even without `FT_CONFIG_OPTION_FORCE_INT64'.
2016-11-10 Werner Lemberg <wl@gnu.org>
Fix `lcd_weights' array size.

View File

@ -105,6 +105,7 @@ AC_CHECK_HEADERS([fcntl.h unistd.h])
AC_C_CONST
AC_CHECK_SIZEOF([int])
AC_CHECK_SIZEOF([long])
AC_TYPE_LONG_LONG_INT
# check whether cpp computation of size of int and long in ftconfig.in works

View File

@ -287,8 +287,8 @@ FT_BEGIN_HEADER
#endif
/* determine whether we have a 64-bit int type for platforms without */
/* Autoconf */
/* 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 */
@ -296,6 +296,16 @@ FT_BEGIN_HEADER
#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 */