Fix more incompatibilities between MinGW.org and MinGW64 headers
Reported by ׃scar Fuentes in http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00699.html and in http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00707.html. nt/inc/ms-w32.h (USE_NO_MINGW_SETJMP_TWO_ARGS) [_W64]: Define to 1. For MinGW64, include sys/types.h and time.h. nt/inc/sys/time.h (struct timeval) [!_W64]: Guard definition with _W64. (struct timezone) [!_TIMEZONE_DEFINED]: Guard definition with _TIMEZONE_DEFINED. nt/addpm.c (_WIN32_IE) [_W64]: For MinGW64, don't define to 0x400. nt/inc/sys/stat.h: Remove _CRTIMP from prototypes of fstat, stat, lstat, and fstatat. lib-src/ntlib.c (struct timespec) [!_TIMEZONE_DEFINED]: Define the struct only if _TIMEZONE_DEFINED is not defined. src/w32term.c (WCRANGE, GLYPHSET): Don't define if _W64 is defined. src/w32.c (REPARSE_DATA_BUFFER): Guard with MAXIMUM_REPARSE_DATA_BUFFER_SIZE being defined.
This commit is contained in:
parent
69b2c07eaf
commit
b88b62dec9
10 changed files with 65 additions and 11 deletions
|
@ -1,3 +1,9 @@
|
|||
2013-03-26 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
Fix incompatibilities between MinGW.org and MinGW64 headers.
|
||||
* ntlib.c (struct timespec) [!_TIMEZONE_DEFINED]: Define the
|
||||
struct only if _TIMEZONE_DEFINED is not defined.
|
||||
|
||||
2013-03-23 cg <chengang31@gmail.com> (tiny change)
|
||||
|
||||
* makefile.w32-in (LIB_SRC): Move before first use.
|
||||
|
|
|
@ -34,11 +34,15 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
|
||||
#include "ntlib.h"
|
||||
|
||||
/* MinGW64 defines _TIMEZONE_DEFINED and defines 'struct timespec' in
|
||||
its system headers. */
|
||||
#ifndef _TIMEZONE_DEFINED
|
||||
struct timezone
|
||||
{
|
||||
int tz_minuteswest; /* minutes west of Greenwich */
|
||||
int tz_dsttime; /* type of dst correction */
|
||||
};
|
||||
#endif
|
||||
|
||||
#define MAXPATHLEN _MAX_PATH
|
||||
|
||||
|
|
20
nt/ChangeLog
20
nt/ChangeLog
|
@ -1,3 +1,23 @@
|
|||
2013-03-26 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
Fix more incompatibilities between MinGW.org and MinGW64 headers
|
||||
reported by Óscar Fuentes in
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00699.html
|
||||
and in
|
||||
http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00707.html.
|
||||
* inc/ms-w32.h (USE_NO_MINGW_SETJMP_TWO_ARGS) [_W64]: Define to 1.
|
||||
For MinGW64, include sys/types.h and time.h.
|
||||
|
||||
* inc/sys/time.h (struct timeval) [!_W64]: Guard definition with
|
||||
_W64.
|
||||
(struct timezone) [!_TIMEZONE_DEFINED]: Guard definition with
|
||||
_TIMEZONE_DEFINED.
|
||||
|
||||
* addpm.c (_WIN32_IE) [_W64]: For MinGW64, don't define to 0x400.
|
||||
|
||||
* inc/sys/stat.h: Remove _CRTIMP from prototypes of fstat, stat,
|
||||
lstat, and fstatat.
|
||||
|
||||
2013-03-25 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
Fix incompatibilities between MinGW.org and MinGW64 headers
|
||||
|
|
|
@ -34,7 +34,11 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
|||
installed, then the DDE fallback for creating icons the Windows 3.1
|
||||
progman way will be used instead, but that is prone to lockups
|
||||
caused by other applications not servicing their message queues. */
|
||||
/* MinGW64 defines _W64 and barfs if _WIN32_IE is defined to anything
|
||||
below 0x500. */
|
||||
#ifndef _W64
|
||||
#define _WIN32_IE 0x400
|
||||
#endif
|
||||
/* Request C Object macros for COM interfaces. */
|
||||
#define COBJMACROS 1
|
||||
|
||||
|
|
|
@ -154,6 +154,14 @@ extern char *getenv ();
|
|||
|
||||
#ifdef emacs
|
||||
|
||||
#ifdef _W64
|
||||
/* MinGW64 specific stuff. */
|
||||
#define USE_NO_MINGW_SETJMP_TWO_ARGS 1
|
||||
/* Make sure 'struct timespec' and 'struct timezone' are defined. */
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <sys/timeb.h>
|
||||
#include <sys/stat.h>
|
||||
|
|
|
@ -106,11 +106,11 @@ extern int w32_stat_get_owner_group;
|
|||
/* Prevent redefinition by other headers, e.g. wchar.h. */
|
||||
#define _STAT_DEFINED
|
||||
|
||||
_CRTIMP int __cdecl __MINGW_NOTHROW fstat (int, struct stat*);
|
||||
_CRTIMP int __cdecl __MINGW_NOTHROW chmod (const char*, int);
|
||||
_CRTIMP int __cdecl __MINGW_NOTHROW stat (const char*, struct stat*);
|
||||
_CRTIMP int __cdecl __MINGW_NOTHROW lstat (const char*, struct stat*);
|
||||
_CRTIMP int __cdecl __MINGW_NOTHROW fstatat (int, char const *,
|
||||
int __cdecl __MINGW_NOTHROW fstat (int, struct stat*);
|
||||
int __cdecl __MINGW_NOTHROW stat (const char*, struct stat*);
|
||||
int __cdecl __MINGW_NOTHROW lstat (const char*, struct stat*);
|
||||
int __cdecl __MINGW_NOTHROW fstatat (int, char const *,
|
||||
struct stat *, int);
|
||||
_CRTIMP int __cdecl __MINGW_NOTHROW chmod (const char*, int);
|
||||
|
||||
#endif /* INC_SYS_STAT_H_ */
|
||||
|
|
|
@ -6,31 +6,34 @@
|
|||
* have the below stuff.
|
||||
*/
|
||||
|
||||
/* The guards are for MinGW64, which defines these structs on its
|
||||
system headers which are included by ms-w32.h. */
|
||||
#ifndef _W64
|
||||
struct timeval
|
||||
{
|
||||
long tv_sec; /* seconds */
|
||||
long tv_usec; /* microseconds */
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifndef _TIMEZONE_DEFINED
|
||||
struct timezone
|
||||
{
|
||||
int tz_minuteswest; /* minutes west of Greenwich */
|
||||
int tz_dsttime; /* type of dst correction */
|
||||
};
|
||||
#endif
|
||||
|
||||
void gettimeofday (struct timeval *, struct timezone *);
|
||||
|
||||
#define ITIMER_REAL 0
|
||||
#define ITIMER_PROF 1
|
||||
|
||||
/* MinGW64 defines 'struct itimerval' and _TIMESPEC_DEFINED in sys/types.h. */
|
||||
#ifndef _TIMESPEC_DEFINED
|
||||
struct itimerval
|
||||
{
|
||||
struct timeval it_interval; /* timer interval */
|
||||
struct timeval it_value; /* current value */
|
||||
};
|
||||
#endif
|
||||
|
||||
int getitimer (int, struct itimerval *);
|
||||
int setitimer (int, struct itimerval *, struct itimerval *);
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2013-03-26 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
Fix incompatibilities between MinGW.org and MinGW64 headers.
|
||||
* w32term.c (WCRANGE, GLYPHSET): Don't define if _W64 is defined.
|
||||
|
||||
* w32.c (REPARSE_DATA_BUFFER): Guard with
|
||||
MAXIMUM_REPARSE_DATA_BUFFER_SIZE being defined.
|
||||
|
||||
2013-03-25 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* xterm.c: Include X11/XKBlib.h
|
||||
|
|
|
@ -127,7 +127,7 @@ typedef struct _PROCESS_MEMORY_COUNTERS_EX {
|
|||
#define SDDL_REVISION_1 1
|
||||
#endif /* SDDL_REVISION_1 */
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#ifndef MAXIMUM_REPARSE_DATA_BUFFER_SIZE
|
||||
/* MSVC doesn't provide the definition of REPARSE_DATA_BUFFER and the
|
||||
associated macros, except on ntifs.h, which cannot be included
|
||||
because it triggers conflicts with other Windows API headers. So
|
||||
|
|
|
@ -109,9 +109,10 @@ struct w32_display_info *x_display_list;
|
|||
Lisp_Object w32_display_name_list;
|
||||
|
||||
|
||||
#if _WIN32_WINNT < 0x0500
|
||||
#if _WIN32_WINNT < 0x0500 && !defined(_W64)
|
||||
/* Pre Windows 2000, this was not available, but define it here so
|
||||
that Emacs compiled on such a platform will run on newer versions. */
|
||||
that Emacs compiled on such a platform will run on newer versions.
|
||||
MinGW64 (_W64) defines these unconditionally, so avoid redefining. */
|
||||
|
||||
typedef struct tagWCRANGE
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue