From a7b3b635244620ce805245355309689724212eb1 Mon Sep 17 00:00:00 2001 From: mistachkin Date: Fri, 14 Feb 2014 23:35:49 +0000 Subject: [PATCH] Better support for MinGW 4.x. FossilOrigin-Name: e147230767383ed9f64085b613fd18508f74be21 --- manifest | 17 ++++++++++------- manifest.uuid | 2 +- src/sqliteInt.h | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 8 deletions(-) diff --git a/manifest b/manifest index d8dd849567..8c86fcc99c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Reduce\sthe\snumber\sof\scases\swhere\sit\sis\snecessary\sto\scheck\sfor\sNULL\safter\nthe\sloop\sterminating\scondition. -D 2014-02-14T20:59:53.587 +C Better\ssupport\sfor\sMinGW\s4.x. +D 2014-02-14T23:35:49.555 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -221,7 +221,7 @@ F src/shell.c 3dd86bf73ccd079f0e32ef5069600586085e8239 F src/sqlite.h.in eed7f7d66a60daaa7b4a597dcd9bad87aad9611b F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e F src/sqlite3ext.h 886f5a34de171002ad46fae8c36a7d8051c190fc -F src/sqliteInt.h 5b1f4e30c8332270e4c14254ef1fbcbd92a4a4c7 +F src/sqliteInt.h bc5e9c7e30d3d65ce2cd218b737f0057de0ce135 F src/sqliteLimit.h 164b0e6749d31e0daa1a4589a169d31c0dec7b3d F src/status.c 7ac05a5c7017d0b9f0b4bcd701228b784f987158 F src/table.c 2cd62736f845d82200acfa1287e33feb3c15d62e @@ -1150,7 +1150,10 @@ F tool/vdbe-compress.tcl 0cf56e9263a152b84da86e75a5c0cdcdb7a47891 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P b6bea903ac8e1717ed50b221d73bd0be061c7663 -R f976ccc3e6f99e20be380cc680402b19 -U drh -Z d8a7427791a9ddd9c5e417477ea3c5a6 +P 3c1ae447dec8fc2af1c5105134061717594ac0e0 +R ce6f8022fe93ee0d0d6cf8a6cc271c33 +T *branch * mingw4x +T *sym-mingw4x * +T -sym-trunk * +U mistachkin +Z c1377b93302be214ebcce2f123ef84cb diff --git a/manifest.uuid b/manifest.uuid index 3ff1fc2f3d..0a1ac78ab8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -3c1ae447dec8fc2af1c5105134061717594ac0e0 \ No newline at end of file +e147230767383ed9f64085b613fd18508f74be21 \ No newline at end of file diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 8b9337a2b0..41e7e2d74d 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -48,6 +48,38 @@ # define _LARGEFILE_SOURCE 1 #endif +/* +** For MinGW, check to see if we can include the header file containing its +** version information, among other things. Normally, this internal MinGW +** header file would [only] be included automatically by other MinGW header +** files; however, the contained version information is now required by this +** header file to work around binary compatibility issues (see below) and +** this is the only known way to reliably obtain it. This entire #if block +** would be completely unnecessary if there was any other way of detecting +** MinGW via their preprocessor (e.g. if they customized their GCC to define +** some MinGW-specific macros). When compiling for MinGW, either the +** _HAVE_MINGW_H or _HAVE__MINGW_H (note the extra underscore) macro must be +** defined; otherwise, detection of conditions specific to MinGW will be +** disabled. +*/ +#if defined(_HAVE_MINGW_H) +# include "mingw.h" +#elif defined(_HAVE__MINGW_H) +# include "_mingw.h" +#endif + +/* +** For MinGW version 4.x (and higher), check to see if the _USE_32BIT_TIME_T +** define is required to maintain binary compatibility with the MSVC runtime +** library in use (e.g. for Windows XP). +*/ +#if !defined(_USE_32BIT_TIME_T) && !defined(_USE_64BIT_TIME_T) && \ + defined(_WIN32) && !defined(_WIN64) && \ + defined(__MINGW32_MAJOR_VERSION) && __MINGW32_MAJOR_VERSION >= 4 && \ + defined(__MSVCRT__) +# define _USE_32BIT_TIME_T +#endif + /* ** Include the configuration header output by 'configure' if we're using the ** autoconf-based build