#elif (defined(__WXMSW__) || defined(__OS2__)) && !defined(__WXPALMOS__) && \
( \
defined(__VISUALC__) || \
+ defined(__MINGW64__) || \
(defined(__MINGW32__) && !defined(__WINE__) && \
wxCHECK_W32API_VERSION(0, 5)) || \
defined(__MWERKS__) || \
// detect compilers which have support for huge files
#if defined(__VISUALC__)
#define wxHAS_HUGE_FILES 1
- #elif defined(__MINGW32__)
+ #elif defined(__MINGW32__) || defined(__MINGW64__)
#define wxHAS_HUGE_FILES 1
#elif defined(_LARGE_FILES)
#define wxHAS_HUGE_FILES 1
// to avoid using them as they're not present in earlier versions and
// always using the native functions spelling is easier than testing for
// the versions
- #if defined(__BORLANDC__) || defined(__DMC__) || defined(__WATCOMC__)
+ #if defined(__BORLANDC__) || defined(__DMC__) || defined(__WATCOMC__) || defined(__MINGW64__)
#define wxPOSIX_IDENT(func) ::func
#else // by default assume MSVC-compatible names
#define wxPOSIX_IDENT(func) _ ## func
#endif
#ifdef wxHAS_HUGE_FILES
- #define wxSeek wxPOSIX_IDENT(lseeki64)
- #define wxLseek wxPOSIX_IDENT(lseeki64)
- #define wxTell wxPOSIX_IDENT(telli64)
+ #ifndef __MINGW64__
+ #define wxSeek wxPOSIX_IDENT(lseeki64)
+ #define wxLseek wxPOSIX_IDENT(lseeki64)
+ #define wxTell wxPOSIX_IDENT(telli64)
+ #else
+ // unfortunately, mingw-W64 is somewhat inconsistent...
+ #define wxSeek _lseeki64
+ #define wxLseek _lseeki64
+ #define wxTell _telli64
+ #endif
#else // !wxHAS_HUGE_FILES
#define wxSeek wxPOSIX_IDENT(lseek)
#define wxLseek wxPOSIX_IDENT(lseek)
// Types: Notice that Watcom is the only compiler to have a wide char
// version of struct stat as well as a wide char stat function variant.
- // This was droped since OW 1.4 "for consistency across platforms".
- #ifdef wxHAS_HUGE_FILES
- #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4)
- #define wxStructStat struct _wstati64
+ // This was dropped since OW 1.4 "for consistency across platforms".
+ //
+ // Borland is also special in that it uses _stat with Unicode functions
+ // (for MSVC compatibility?) but stat with ANSI ones
+ #ifdef __BORLANDC__
+ #if wxUSE_UNICODE
+ #define wxStructStat struct _stat
#else
- #define wxStructStat struct _stati64
+ #define wxStructStat struct stat
#endif
- #else
- #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4)
- #define wxStructStat struct _wstat
+ #else // !__BORLANDC__
+ #ifdef wxHAS_HUGE_FILES
+ #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4)
+ #define wxStructStat struct _wstati64
+ #else
+ #define wxStructStat struct _stati64
+ #endif
#else
- #define wxStructStat struct _stat
+ #if wxUSE_UNICODE && wxONLY_WATCOM_EARLIER_THAN(1,4)
+ #define wxStructStat struct _wstat
+ #else
+ #define wxStructStat struct _stat
+ #endif
#endif
- #endif
+ #endif // __BORLANDC__/!__BORLANDC__
// constants (unless already defined by the user code)
#ifdef wxHAS_UNDERSCORES_IN_POSIX_IDENTS