summaryrefslogtreecommitdiff
path: root/nt
diff options
context:
space:
mode:
authorGlenn Morris <rgm@gnu.org>2012-08-01 23:19:48 -0700
committerGlenn Morris <rgm@gnu.org>2012-08-01 23:19:48 -0700
commit837b365b2ad2363c59f9c1fd78beab92a5eada02 (patch)
tree69cabb64cbed6479ebc6ec6f14fb9063a7f09b9b /nt
parent2a194dcceb0406ba83d355b881a7d5f5b7ed7323 (diff)
downloademacs-837b365b2ad2363c59f9c1fd78beab92a5eada02.tar.gz
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 <ms-w32.h>. * 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.
Diffstat (limited to 'nt')
-rw-r--r--nt/ChangeLog5
-rw-r--r--nt/config.nt4
-rw-r--r--nt/inc/ms-w32.h423
3 files changed, 430 insertions, 2 deletions
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 <rgm@gnu.org>
+
+ * inc/ms-w32.h: Move here from ../src/s.
+ * config.nt (config_opsysfile): Change to <ms-w32.h>.
+
2012-08-01 Juanma Barranquero <lekktu@gmail.com>
* 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 <http://www.gnu.org/licenses/>. */
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 <http://www.gnu.org/licenses/>. */
/* Some platforms that do not use configure define this to include extra
configuration information. */
-#define config_opsysfile "s/ms-w32.h"
+#define config_opsysfile <ms-w32.h>
/* 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 <http://www.gnu.org/licenses/>. */
+
+/* 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 <sys/time.h> 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 <sys/types.h>
+
+#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 <sys/timeb.h>
+#include <sys/stat.h>
+#include <signal.h>
+
+/* 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 <time.h>
+#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 <direct.h>
+#include <io.h>
+#include <stdio.h>
+#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 <malloc.h>
+#endif
+
+/* stdlib.h must be included after redefining malloc & friends, but
+ before redefining abort. Isn't library redefinition funny? */
+#include <stdlib.h>
+
+/* Redefine abort. */
+#ifdef HAVE_NTGUI
+#define abort w32_abort
+extern _Noreturn void w32_abort (void);
+#endif
+
+#include <sys/stat.h>
+
+/* 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
+
+/* ============================================================ */