From: Glenn Morris Date: Thu, 2 Aug 2012 06:19:48 +0000 (-0700) Subject: Move NT-specific include file to the NT include directory X-Git-Tag: emacs-24.2.90~900 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=837b365b2ad2363c59f9c1fd78beab92a5eada02;p=emacs.git Move NT-specific include file to the NT include directory * nt/inc/ms-w32.h: Move here from ../src/s. * nt/config.nt (config_opsysfile): Change to . * s/ms-w32.h: Move to ../nt/inc. * src/makefile.w32-in (TAGS, TAGS-gmake, MS_W32_H): Update for new ms-w32.h location. * lib-src/makefile.w32-in (MS_W32_H): Update for new ms-w32.h location. * lib/makefile.w32-in (MS_W32_H): Update for new ms-w32.h location. * lisp/emacs-lisp/authors.el (authors-renamed-files-alist): Add ms-w32.h. --- diff --git a/ChangeLog b/ChangeLog index 715c6abd5b0..60376bc4158 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2012-08-02 Glenn Morris + + * lib/makefile.w32-in (MS_W32_H): Update for new ms-w32.h location. + 2012-08-02 Paul Eggert Merge from gnulib (Bug#12116), incorporating: diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index 4dc648b410b..1e543346707 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,7 @@ +2012-08-02 Glenn Morris + + * makefile.w32-in (MS_W32_H): Update for new ms-w32.h location. + 2012-08-01 Glenn Morris * Makefile.in (config_h): New variable. diff --git a/lib-src/makefile.w32-in b/lib-src/makefile.w32-in index 8c9482b9194..26605b8ba4e 100644 --- a/lib-src/makefile.w32-in +++ b/lib-src/makefile.w32-in @@ -360,7 +360,7 @@ SRC = $(EMACS_ROOT)/src NT_INC = $(EMACS_ROOT)/nt/inc GNU_LIB = $(EMACS_ROOT)/lib -MS_W32_H = $(SRC)/s/ms-w32.h \ +MS_W32_H = $(NT_INC)/ms-w32.h \ $(NT_INC)/sys/stat.h CONF_POST_H = $(SRC)/conf_post.h \ $(MS_W32_H) diff --git a/lib/makefile.w32-in b/lib/makefile.w32-in index 4cebc727513..db451d542a8 100644 --- a/lib/makefile.w32-in +++ b/lib/makefile.w32-in @@ -1,5 +1,5 @@ # -*- Makefile -*- for GNU Emacs on the Microsoft Windows API. -# Copyright (C) 2011 Free Software Foundation, Inc. +# Copyright (C) 2011-2012 Free Software Foundation, Inc. # This file is part of GNU Emacs. @@ -71,7 +71,7 @@ NT_INC = $(EMACS_ROOT)/nt/inc C_CTYPE_H = $(GNU_LIB)/c-ctype.h \ $(NT_INC)/stdbool.h -MS_W32_H = $(SRC)/s/ms-w32.h \ +MS_W32_H = $(NT_INC)/ms-w32.h \ $(NT_INC)/sys/stat.h CONF_POST_H = $(SRC)/conf_post.h \ $(MS_W32_H) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 075c6c7a389..ec93d25a991 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2012-08-02 Glenn Morris + + * emacs-lisp/authors.el (authors-renamed-files-alist): Add ms-w32.h. + 2012-08-02 Paul Eggert Obsolete alias inactivate-current-input-method-function (Bug#10150). diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el index 20cc38cd9c2..6c70642ba83 100644 --- a/lisp/emacs-lisp/authors.el +++ b/lisp/emacs-lisp/authors.el @@ -578,6 +578,7 @@ in the repository.") ("w32console.c" . "w32term.c") ("unexnt.c" . "unexw32.c") ("s/windowsnt.h" . "s/ms-w32.h") + ("s/ms-w32.h" . "inc/ms-w32.h") ("winnt.el" . "w32-fns.el") ("config.emacs" . "configure") ("configure.in" . "configure.ac") diff --git a/nt/ChangeLog b/nt/ChangeLog index 7e97faad311..e903b4375db 100644 --- a/nt/ChangeLog +++ b/nt/ChangeLog @@ -1,3 +1,8 @@ +2012-08-02 Glenn Morris + + * inc/ms-w32.h: Move here from ../src/s. + * config.nt (config_opsysfile): Change to . + 2012-08-01 Juanma Barranquero * config.nt: Sync with autogen/config.in. diff --git a/nt/config.nt b/nt/config.nt index 97889438cc6..4687630589b 100644 --- a/nt/config.nt +++ b/nt/config.nt @@ -22,7 +22,7 @@ along with GNU Emacs. If not, see . */ This file is intentionally kept in sync with autogen/config.in to ease maintenance. Please do not remove non-Windows related stuff unless strictly necessary. Also, before adding anything here - consider whether src/s/ms-w32.h would be a better place; this is + consider whether inc/ms-w32.h would be a better place; this is particularly true for gcc vs. MSVC conditional defines, MinGW or MSVC specific code, and macros not already defined in config.in. */ @@ -1538,7 +1538,7 @@ along with GNU Emacs. If not, see . */ /* Some platforms that do not use configure define this to include extra configuration information. */ -#define config_opsysfile "s/ms-w32.h" +#define config_opsysfile /* A replacement for va_copy, if needed. */ #define gl_va_copy(a,b) ((a) = (b)) diff --git a/nt/inc/ms-w32.h b/nt/inc/ms-w32.h new file mode 100644 index 00000000000..8c02a8b8a66 --- /dev/null +++ b/nt/inc/ms-w32.h @@ -0,0 +1,423 @@ +/* System description file for Windows NT. + +Copyright (C) 1993-1995, 2001-2012 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . */ + +/* Define symbols to identify the version of Unix this is. + Define all the symbols that apply correctly. */ + +#ifndef WINDOWSNT +#define WINDOWSNT +#endif +#ifndef DOS_NT +#define DOS_NT /* MSDOS or WINDOWSNT */ +#endif + +/* #undef const */ + +/* If you are compiling with a non-C calling convention but need to + declare vararg routines differently, put it here. */ +#define _VARARGS_ __cdecl + +/* If you are providing a function to something that will call the + function back (like a signal handler and signal, or main) its calling + convention must be whatever standard the libraries expect. */ +#define _CALLBACK_ __cdecl + +/* Define HAVE_TIMEVAL if the system supports the BSD style clock values. + Look in for a timeval structure. */ +#define HAVE_TIMEVAL 1 + +/* But our select implementation doesn't allow us to make non-blocking + connects. So until that is fixed, this is necessary: */ +#define BROKEN_NON_BLOCKING_CONNECT 1 + +/* And the select implementation does 1-byte read-ahead waiting + for received packets, so datagrams are broken too. */ +#define BROKEN_DATAGRAM_SOCKETS 1 + +#define MAIL_USE_SYSTEM_LOCK 1 + +/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */ +#ifdef __GNUC__ +#define HAVE_ATTRIBUTE_ALIGNED 1 +#endif + +/* Define to 1 if strtold conforms to C99. */ +#ifdef __GNUC__ +#define HAVE_C99_STRTOLD 1 +#endif + +#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) +#define HAVE___BUILTIN_UNWIND_INIT 1 +#endif + +/* ============================================================ */ + +/* Here, add any special hacks needed to make Emacs work on this + system. For example, you might define certain system call names + that don't exist on your system, or that do different things on + your system and must be used only through an encapsulation (which + you should place, by convention, in sysdep.c). */ + +#ifdef __GNUC__ +#ifndef __cplusplus +#undef inline +#endif +#else /* MSVC */ +#define inline __inline +#endif + +#ifdef __GNUC__ +# define restrict __restrict__ +#else +# define restrict +#endif + +/* `mode_t' is not defined for MSVC. Define. */ +#ifdef _MSC_VER +typedef unsigned short mode_t; +#endif + +/* A va_copy replacement for MSVC. */ +#ifdef _MSC_VER +# ifdef _WIN64 +# ifndef va_copy /* Need to be checked (?) */ +# define va_copy(d,s) ((d) = (s)) +# endif +# else /* not _WIN64 */ +# define va_copy(d,s) ((d) = (s)) +# endif /* not _WIN64 */ +#endif /* _MSC_VER */ + +#ifndef WINDOWSNT +/* Some of the files of Emacs which are intended for use with other + programs assume that if you have a config.h file, you must declare + the type of getenv. */ +extern char *getenv (); +#endif + +#ifdef HAVE_STRINGS_H +#include "strings.h" +#endif +#include + +#ifdef _MSC_VER +typedef unsigned long sigset_t; +typedef int ssize_t; +#endif + +struct sigaction { + int sa_flags; + void (*sa_handler)(int); + sigset_t sa_mask; +}; +#define SIG_BLOCK 1 +#define SIG_SETMASK 2 +#define SIG_UNBLOCK 3 + +#ifndef MAXPATHLEN +#define MAXPATHLEN _MAX_PATH +#endif + +#ifdef HAVE_NTGUI +#define HAVE_WINDOW_SYSTEM 1 +#define HAVE_MENUS 1 +#endif + +/* Get some redefinitions in place. */ + +#ifdef emacs + +#ifdef _MSC_VER +#include +#include +#include + +/* MSVC gets link-time errors without these redirections. */ +#define fstat(a, b) sys_fstat(a, b) +#define stat(a, b) sys_stat(a, b) +#define utime sys_utime +#endif + +/* Calls that are emulated or shadowed. */ +#undef access +#define access sys_access +#undef chdir +#define chdir sys_chdir +#undef chmod +#define chmod sys_chmod +#define chown sys_chown +#undef close +#define close sys_close +#undef creat +#define creat sys_creat +#define ctime sys_ctime +#undef dup +#define dup sys_dup +#undef dup2 +#define dup2 sys_dup2 +#define fopen sys_fopen +#define link sys_link +#define localtime sys_localtime +#define mkdir sys_mkdir +#undef mktemp +#define mktemp sys_mktemp +#undef open +#define open sys_open +#define pipe sys_pipe +#undef read +#define read sys_read +#define rename sys_rename +#define rmdir sys_rmdir +#define select sys_select +#define pselect sys_select +#define sleep sys_sleep +#define strerror sys_strerror +#undef unlink +#define unlink sys_unlink +#undef write +#define write sys_write + +/* Subprocess calls that are emulated. */ +#define spawnve sys_spawnve +#define wait sys_wait +#define kill sys_kill +#define signal sys_signal + +/* termcap.c calls that are emulated. */ +#define tputs sys_tputs +#define tgetstr sys_tgetstr + +/* cm.c calls that are emulated. */ +#define chcheckmagic sys_chcheckmagic +#define cmcostinit sys_cmcostinit +#define cmgoto sys_cmgoto +#define cmputc sys_cmputc +#define Wcm_clear sys_Wcm_clear + +#endif /* emacs */ + +/* Map to MSVC names. */ +#define execlp _execlp +#define execvp _execvp +#define fdopen _fdopen +#ifndef fileno +#define fileno _fileno +#endif +#define fsync _commit +#define ftruncate _chsize +#define getpid _getpid +#ifdef _MSC_VER +typedef int pid_t; +#define snprintf _snprintf +#define strtoll _strtoi64 +#endif +#define isatty _isatty +#define logb _logb +#define _longjmp longjmp +#define lseek _lseek +#define popen _popen +#define pclose _pclose +#define umask _umask +#ifndef _MSC_VER +#define utimbuf _utimbuf +#endif +#define strdup _strdup +#define strupr _strupr +#define strnicmp _strnicmp +#define stricmp _stricmp +#define tzset _tzset + +/* Include time.h before redirecting tzname, since MSVC's time.h + defines _tzname to call a function, but also declares tzname a + 2-element array. Having the redirection before including the + header thus has the effect of declaring a function that returns an + array, and triggers an error message. */ +#include +#define tzname _tzname +#if !defined (_MSC_VER) || (_MSC_VER < 1400) +#undef utime +#define utime _utime +#endif + +/* 'struct timespec' is used by time-related functions in lib/ and + elsewhere, but we don't use lib/time.h where the structure is + defined. */ +struct timespec +{ + time_t tv_sec; /* seconds */ + long int tv_nsec; /* nanoseconds */ +}; + +/* This is hacky, but is necessary to avoid warnings about macro + redefinitions using the SDK compilers. */ +#ifndef __STDC__ +#define __STDC__ 1 +#define MUST_UNDEF__STDC__ +#endif +#include +#include +#include +#ifdef MUST_UNDEF__STDC__ +#undef __STDC__ +#undef MUST_UNDEF__STDC__ +#endif + +/* Defines that we need that aren't in the standard signal.h. */ +#define SIGHUP 1 /* Hang up */ +#define SIGQUIT 3 /* Quit process */ +#define SIGTRAP 5 /* Trace trap */ +#define SIGKILL 9 /* Die, die die */ +#define SIGPIPE 13 /* Write on pipe with no readers */ +#define SIGALRM 14 /* Alarm */ +#define SIGCHLD 18 /* Death of child */ + +#ifndef NSIG +#define NSIG 23 +#endif + +/* For integration with MSDOS support. */ +#define getdisk() (_getdrive () - 1) +#ifdef emacs +#define getdefdir(_drv, _buf) ((_buf[0] = (_drv + 'A' - 1), _buf[1] = ':', _buf[2] = '/', _buf[3] = 0), 1) +#else +#define getdefdir(_drv, _buf) _getdcwd (_drv, _buf, MAXPATHLEN) +#endif + +extern char *get_emacs_configuration (void); +extern char *get_emacs_configuration_options (void); +#define EMACS_CONFIGURATION get_emacs_configuration () +#define EMACS_CONFIG_OPTIONS get_emacs_configuration_options () + +/* Define this so that winsock.h definitions don't get included with + windows.h. For this to have proper effect, config.h must always be + included before windows.h. */ +#define _WINSOCKAPI_ 1 +#define _WINSOCK_H + +/* Prevent accidental use of features unavailable in + older Windows versions we still support. */ +#define _WIN32_WINNT 0x0400 + +/* Make a leaner executable. */ +#define WIN32_LEAN_AND_MEAN 1 + +/* Defines size_t and alloca (). */ +#ifdef emacs +#define malloc e_malloc +#define free e_free +#define realloc e_realloc +#define calloc e_calloc +#endif +#ifdef _MSC_VER +#define alloca _alloca +#else +#include +#endif + +/* stdlib.h must be included after redefining malloc & friends, but + before redefining abort. Isn't library redefinition funny? */ +#include + +/* Redefine abort. */ +#ifdef HAVE_NTGUI +#define abort w32_abort +extern _Noreturn void w32_abort (void); +#endif + +#include + +/* Define for those source files that do not include enough NT system files. */ +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif + +/* For proper declaration of environ. */ +#ifndef sys_nerr +#define sys_nerr _sys_nerr +#endif + +extern int getloadavg (double *, int); + +#if defined (__MINGW32__) || _MSC_VER >= 1400 + +/* Define to 1 if the system has the type `long long int'. */ +# define HAVE_LONG_LONG_INT 1 + +/* Define to 1 if the system has the type `unsigned long long int'. */ +# define HAVE_UNSIGNED_LONG_LONG_INT 1 + +#elif _MSC_VER >= 1200 + +/* Temporarily disable wider-than-pointer integers until they're tested more. + Build with CFLAGS='-DWIDE_EMACS_INT' to try them out. */ + +# ifdef WIDE_EMACS_INT + +/* Use pre-C99-style 64-bit integers. */ +typedef __int64 EMACS_INT; +typedef unsigned __int64 EMACS_UINT; +# define EMACS_INT_MAX _I64_MAX +# define pI "I64" + +# endif + +#endif + +/* We need a little extra space, see ../../lisp/loadup.el. */ +#define SYSTEM_PURESIZE_EXTRA 50000 + +#define DATA_START get_data_start () + +/* For unexec to work on Alpha systems, we need to put Emacs' + initialized data into a separate section from the CRT initialized + data (because the Alpha linker freely reorders data variables, even + across libraries, so our data and the CRT data get intermingled). + + Starting with MSVC 5.0, we must also place the uninitialized data + into its own section. VC5 intermingles uninitialized data from the CRT + between Emacs' static uninitialized data and its public uninitialized + data. A separate .bss section for Emacs groups both static and + public uninitialized together. + + Note that unexw32.c relies on this fact, and must be modified + accordingly if this section name is changed, or if this pragma is + removed. Also, obviously, all files that define initialized data + must include config.h to pick up this pragma. */ + +/* Names must be < 8 bytes. */ +#ifdef _MSC_VER +#pragma data_seg("EMDATA") +#pragma bss_seg("EMBSS") +#endif + +/* #define FULL_DEBUG */ +/* #define EMACSDEBUG */ + +#ifdef EMACSDEBUG +extern void _DebPrint (const char *fmt, ...); +#define DebPrint(stuff) _DebPrint stuff +#else +#define DebPrint(stuff) +#endif + +/* ============================================================ */ diff --git a/src/ChangeLog b/src/ChangeLog index 50c6d18e242..906107a667d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2012-08-02 Glenn Morris + + * s/ms-w32.h: Move to ../nt/inc. + * makefile.w32-in (TAGS, TAGS-gmake, MS_W32_H): + Update for new ms-w32.h location. + 2012-08-02 Paul Eggert Port to Solaris 8. diff --git a/src/makefile.w32-in b/src/makefile.w32-in index ee5424cf757..31dc94f7964 100644 --- a/src/makefile.w32-in +++ b/src/makefile.w32-in @@ -339,7 +339,7 @@ cleanall: clean ## ## This works only with GNU Make. -TAGS: $(OBJ0) $(OBJ1) $(OBJ2) $(CURDIR)/s/ms-w32.h +TAGS: $(OBJ0) $(OBJ1) $(OBJ2) $(CURDIR)/../nt/inc/ms-w32.h $(MAKE) $(MFLAGS) TAGS-$(MAKETYPE) TAGS-LISP: $(OBJ0) $(OBJ1) $(OBJ2) @@ -353,7 +353,7 @@ TAGS-gmake: $(OBJ1_c) ../lib-src/$(BLD)/etags.exe -a --regex=@../nt/emacs-src.tags \ $(OBJ2_c) \ - $(CURDIR)/*.h $(CURDIR)/s/ms-w32.h + $(CURDIR)/*.h $(CURDIR)/../nt/inc/ms-w32.h TAGS-nmake: echo This target is not supported with NMake @@ -403,7 +403,7 @@ CHARSET_H = $(SRC)/charset.h \ $(GNU_LIB)/verify.h CODING_H = $(SRC)/coding.h \ $(SRC)/composite.h -MS_W32_H = $(SRC)/s/ms-w32.h \ +MS_W32_H = $(NT_INC)/ms-w32.h \ $(NT_INC)/sys/stat.h CONF_POST_H = $(SRC)/conf_post.h \ $(MS_W32_H) diff --git a/src/s/ms-w32.h b/src/s/ms-w32.h deleted file mode 100644 index 8c02a8b8a66..00000000000 --- a/src/s/ms-w32.h +++ /dev/null @@ -1,423 +0,0 @@ -/* System description file for Windows NT. - -Copyright (C) 1993-1995, 2001-2012 Free Software Foundation, Inc. - -This file is part of GNU Emacs. - -GNU Emacs is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -GNU Emacs is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with GNU Emacs. If not, see . */ - -/* Define symbols to identify the version of Unix this is. - Define all the symbols that apply correctly. */ - -#ifndef WINDOWSNT -#define WINDOWSNT -#endif -#ifndef DOS_NT -#define DOS_NT /* MSDOS or WINDOWSNT */ -#endif - -/* #undef const */ - -/* If you are compiling with a non-C calling convention but need to - declare vararg routines differently, put it here. */ -#define _VARARGS_ __cdecl - -/* If you are providing a function to something that will call the - function back (like a signal handler and signal, or main) its calling - convention must be whatever standard the libraries expect. */ -#define _CALLBACK_ __cdecl - -/* Define HAVE_TIMEVAL if the system supports the BSD style clock values. - Look in for a timeval structure. */ -#define HAVE_TIMEVAL 1 - -/* But our select implementation doesn't allow us to make non-blocking - connects. So until that is fixed, this is necessary: */ -#define BROKEN_NON_BLOCKING_CONNECT 1 - -/* And the select implementation does 1-byte read-ahead waiting - for received packets, so datagrams are broken too. */ -#define BROKEN_DATAGRAM_SOCKETS 1 - -#define MAIL_USE_SYSTEM_LOCK 1 - -/* Define to 1 if GCC-style __attribute__ ((__aligned__ (expr))) works. */ -#ifdef __GNUC__ -#define HAVE_ATTRIBUTE_ALIGNED 1 -#endif - -/* Define to 1 if strtold conforms to C99. */ -#ifdef __GNUC__ -#define HAVE_C99_STRTOLD 1 -#endif - -#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 8)) -#define HAVE___BUILTIN_UNWIND_INIT 1 -#endif - -/* ============================================================ */ - -/* Here, add any special hacks needed to make Emacs work on this - system. For example, you might define certain system call names - that don't exist on your system, or that do different things on - your system and must be used only through an encapsulation (which - you should place, by convention, in sysdep.c). */ - -#ifdef __GNUC__ -#ifndef __cplusplus -#undef inline -#endif -#else /* MSVC */ -#define inline __inline -#endif - -#ifdef __GNUC__ -# define restrict __restrict__ -#else -# define restrict -#endif - -/* `mode_t' is not defined for MSVC. Define. */ -#ifdef _MSC_VER -typedef unsigned short mode_t; -#endif - -/* A va_copy replacement for MSVC. */ -#ifdef _MSC_VER -# ifdef _WIN64 -# ifndef va_copy /* Need to be checked (?) */ -# define va_copy(d,s) ((d) = (s)) -# endif -# else /* not _WIN64 */ -# define va_copy(d,s) ((d) = (s)) -# endif /* not _WIN64 */ -#endif /* _MSC_VER */ - -#ifndef WINDOWSNT -/* Some of the files of Emacs which are intended for use with other - programs assume that if you have a config.h file, you must declare - the type of getenv. */ -extern char *getenv (); -#endif - -#ifdef HAVE_STRINGS_H -#include "strings.h" -#endif -#include - -#ifdef _MSC_VER -typedef unsigned long sigset_t; -typedef int ssize_t; -#endif - -struct sigaction { - int sa_flags; - void (*sa_handler)(int); - sigset_t sa_mask; -}; -#define SIG_BLOCK 1 -#define SIG_SETMASK 2 -#define SIG_UNBLOCK 3 - -#ifndef MAXPATHLEN -#define MAXPATHLEN _MAX_PATH -#endif - -#ifdef HAVE_NTGUI -#define HAVE_WINDOW_SYSTEM 1 -#define HAVE_MENUS 1 -#endif - -/* Get some redefinitions in place. */ - -#ifdef emacs - -#ifdef _MSC_VER -#include -#include -#include - -/* MSVC gets link-time errors without these redirections. */ -#define fstat(a, b) sys_fstat(a, b) -#define stat(a, b) sys_stat(a, b) -#define utime sys_utime -#endif - -/* Calls that are emulated or shadowed. */ -#undef access -#define access sys_access -#undef chdir -#define chdir sys_chdir -#undef chmod -#define chmod sys_chmod -#define chown sys_chown -#undef close -#define close sys_close -#undef creat -#define creat sys_creat -#define ctime sys_ctime -#undef dup -#define dup sys_dup -#undef dup2 -#define dup2 sys_dup2 -#define fopen sys_fopen -#define link sys_link -#define localtime sys_localtime -#define mkdir sys_mkdir -#undef mktemp -#define mktemp sys_mktemp -#undef open -#define open sys_open -#define pipe sys_pipe -#undef read -#define read sys_read -#define rename sys_rename -#define rmdir sys_rmdir -#define select sys_select -#define pselect sys_select -#define sleep sys_sleep -#define strerror sys_strerror -#undef unlink -#define unlink sys_unlink -#undef write -#define write sys_write - -/* Subprocess calls that are emulated. */ -#define spawnve sys_spawnve -#define wait sys_wait -#define kill sys_kill -#define signal sys_signal - -/* termcap.c calls that are emulated. */ -#define tputs sys_tputs -#define tgetstr sys_tgetstr - -/* cm.c calls that are emulated. */ -#define chcheckmagic sys_chcheckmagic -#define cmcostinit sys_cmcostinit -#define cmgoto sys_cmgoto -#define cmputc sys_cmputc -#define Wcm_clear sys_Wcm_clear - -#endif /* emacs */ - -/* Map to MSVC names. */ -#define execlp _execlp -#define execvp _execvp -#define fdopen _fdopen -#ifndef fileno -#define fileno _fileno -#endif -#define fsync _commit -#define ftruncate _chsize -#define getpid _getpid -#ifdef _MSC_VER -typedef int pid_t; -#define snprintf _snprintf -#define strtoll _strtoi64 -#endif -#define isatty _isatty -#define logb _logb -#define _longjmp longjmp -#define lseek _lseek -#define popen _popen -#define pclose _pclose -#define umask _umask -#ifndef _MSC_VER -#define utimbuf _utimbuf -#endif -#define strdup _strdup -#define strupr _strupr -#define strnicmp _strnicmp -#define stricmp _stricmp -#define tzset _tzset - -/* Include time.h before redirecting tzname, since MSVC's time.h - defines _tzname to call a function, but also declares tzname a - 2-element array. Having the redirection before including the - header thus has the effect of declaring a function that returns an - array, and triggers an error message. */ -#include -#define tzname _tzname -#if !defined (_MSC_VER) || (_MSC_VER < 1400) -#undef utime -#define utime _utime -#endif - -/* 'struct timespec' is used by time-related functions in lib/ and - elsewhere, but we don't use lib/time.h where the structure is - defined. */ -struct timespec -{ - time_t tv_sec; /* seconds */ - long int tv_nsec; /* nanoseconds */ -}; - -/* This is hacky, but is necessary to avoid warnings about macro - redefinitions using the SDK compilers. */ -#ifndef __STDC__ -#define __STDC__ 1 -#define MUST_UNDEF__STDC__ -#endif -#include -#include -#include -#ifdef MUST_UNDEF__STDC__ -#undef __STDC__ -#undef MUST_UNDEF__STDC__ -#endif - -/* Defines that we need that aren't in the standard signal.h. */ -#define SIGHUP 1 /* Hang up */ -#define SIGQUIT 3 /* Quit process */ -#define SIGTRAP 5 /* Trace trap */ -#define SIGKILL 9 /* Die, die die */ -#define SIGPIPE 13 /* Write on pipe with no readers */ -#define SIGALRM 14 /* Alarm */ -#define SIGCHLD 18 /* Death of child */ - -#ifndef NSIG -#define NSIG 23 -#endif - -/* For integration with MSDOS support. */ -#define getdisk() (_getdrive () - 1) -#ifdef emacs -#define getdefdir(_drv, _buf) ((_buf[0] = (_drv + 'A' - 1), _buf[1] = ':', _buf[2] = '/', _buf[3] = 0), 1) -#else -#define getdefdir(_drv, _buf) _getdcwd (_drv, _buf, MAXPATHLEN) -#endif - -extern char *get_emacs_configuration (void); -extern char *get_emacs_configuration_options (void); -#define EMACS_CONFIGURATION get_emacs_configuration () -#define EMACS_CONFIG_OPTIONS get_emacs_configuration_options () - -/* Define this so that winsock.h definitions don't get included with - windows.h. For this to have proper effect, config.h must always be - included before windows.h. */ -#define _WINSOCKAPI_ 1 -#define _WINSOCK_H - -/* Prevent accidental use of features unavailable in - older Windows versions we still support. */ -#define _WIN32_WINNT 0x0400 - -/* Make a leaner executable. */ -#define WIN32_LEAN_AND_MEAN 1 - -/* Defines size_t and alloca (). */ -#ifdef emacs -#define malloc e_malloc -#define free e_free -#define realloc e_realloc -#define calloc e_calloc -#endif -#ifdef _MSC_VER -#define alloca _alloca -#else -#include -#endif - -/* stdlib.h must be included after redefining malloc & friends, but - before redefining abort. Isn't library redefinition funny? */ -#include - -/* Redefine abort. */ -#ifdef HAVE_NTGUI -#define abort w32_abort -extern _Noreturn void w32_abort (void); -#endif - -#include - -/* Define for those source files that do not include enough NT system files. */ -#ifndef NULL -#ifdef __cplusplus -#define NULL 0 -#else -#define NULL ((void *)0) -#endif -#endif - -/* For proper declaration of environ. */ -#ifndef sys_nerr -#define sys_nerr _sys_nerr -#endif - -extern int getloadavg (double *, int); - -#if defined (__MINGW32__) || _MSC_VER >= 1400 - -/* Define to 1 if the system has the type `long long int'. */ -# define HAVE_LONG_LONG_INT 1 - -/* Define to 1 if the system has the type `unsigned long long int'. */ -# define HAVE_UNSIGNED_LONG_LONG_INT 1 - -#elif _MSC_VER >= 1200 - -/* Temporarily disable wider-than-pointer integers until they're tested more. - Build with CFLAGS='-DWIDE_EMACS_INT' to try them out. */ - -# ifdef WIDE_EMACS_INT - -/* Use pre-C99-style 64-bit integers. */ -typedef __int64 EMACS_INT; -typedef unsigned __int64 EMACS_UINT; -# define EMACS_INT_MAX _I64_MAX -# define pI "I64" - -# endif - -#endif - -/* We need a little extra space, see ../../lisp/loadup.el. */ -#define SYSTEM_PURESIZE_EXTRA 50000 - -#define DATA_START get_data_start () - -/* For unexec to work on Alpha systems, we need to put Emacs' - initialized data into a separate section from the CRT initialized - data (because the Alpha linker freely reorders data variables, even - across libraries, so our data and the CRT data get intermingled). - - Starting with MSVC 5.0, we must also place the uninitialized data - into its own section. VC5 intermingles uninitialized data from the CRT - between Emacs' static uninitialized data and its public uninitialized - data. A separate .bss section for Emacs groups both static and - public uninitialized together. - - Note that unexw32.c relies on this fact, and must be modified - accordingly if this section name is changed, or if this pragma is - removed. Also, obviously, all files that define initialized data - must include config.h to pick up this pragma. */ - -/* Names must be < 8 bytes. */ -#ifdef _MSC_VER -#pragma data_seg("EMDATA") -#pragma bss_seg("EMBSS") -#endif - -/* #define FULL_DEBUG */ -/* #define EMACSDEBUG */ - -#ifdef EMACSDEBUG -extern void _DebPrint (const char *fmt, ...); -#define DebPrint(stuff) _DebPrint stuff -#else -#define DebPrint(stuff) -#endif - -/* ============================================================ */