mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-21 18:23:59 +00:00
Minor fixes for MinGW64 build.
configure.ac (canonical, C_SWITCH_SYSTEM): Support a 64-bit MinGW64 build on MS-Windows. nt/inc/ms-w32.h (sys_kill): Fix prototype. src/w32term.c (w32_initialize): Use LCID and LOWORD. src/w32proc.c (create_child): Use pid_t for 5th argument. (IsValidLocale): Don't provide prototype for MinGW64. (Fw32_get_valid_keyboard_layouts, Fw32_get_keyboard_layout) (Fw32_set_keyboard_layout): Use HKL and HIWORD/LOWORD. src/w32heap.c (allocate_heap) [_WIN64]: Use "ull", not "i64", which MinGW64 doesn't support. src/lisp.h (EMACS_INT) [_WIN64]: Define for the MinGW64 build.
This commit is contained in:
parent
535f0fbd00
commit
bd717ca4f4
@ -1,3 +1,8 @@
|
||||
2013-12-31 Fabrice Popineau <fabrice.popineau@supelec.fr>
|
||||
|
||||
* configure.ac (canonical, C_SWITCH_SYSTEM): Support a 64-bit
|
||||
MinGW64 build on MS-Windows.
|
||||
|
||||
2013-12-29 Jan Djärv <jan.h.d@swipnet.se>
|
||||
|
||||
* configure.ac (xcsdkdir): Only set if using xcrun.
|
||||
|
21
configure.ac
21
configure.ac
@ -622,6 +622,18 @@ case "${canonical}" in
|
||||
esac
|
||||
;;
|
||||
|
||||
# MinGW64
|
||||
x86_64-*-* )
|
||||
case "${canonical}" in
|
||||
*-mingw32 )
|
||||
opsys=mingw32
|
||||
# MinGW overrides and adds some system headers in nt/inc.
|
||||
GCC_TEST_OPTIONS="-I $srcdir/nt/inc"
|
||||
;;
|
||||
## Otherwise, we'll fall through to the generic opsys code at the bottom.
|
||||
esac
|
||||
;;
|
||||
|
||||
* )
|
||||
unported=yes
|
||||
;;
|
||||
@ -1215,7 +1227,12 @@ C_SWITCH_SYSTEM=
|
||||
## additional optimization. --nils@exp-math.uni-essen.de
|
||||
test "$opsys" = "aix4.2" && test "x$GCC" != "xyes" && \
|
||||
C_SWITCH_SYSTEM="-ma -qmaxmem=4000"
|
||||
test "$opsys" = "mingw32" && C_SWITCH_SYSTEM="-mtune=pentium4"
|
||||
if test "$opsys" = "mingw32"; then
|
||||
case "$canonical" in
|
||||
x86_64-*-mingw32) C_SWITCH_SYSTEM="-mtune=generic" ;;
|
||||
*) C_SWITCH_SYSTEM="-mtune=pentium4" ;;
|
||||
esac
|
||||
fi
|
||||
## gnu-linux might need -D_BSD_SOURCE on old libc5 systems.
|
||||
## It is redundant in glibc2, since we define _GNU_SOURCE.
|
||||
AC_SUBST(C_SWITCH_SYSTEM)
|
||||
@ -4802,7 +4819,7 @@ case "$opsys" in
|
||||
## pass a different -entry switch to linker. FIXME: It is better
|
||||
## to make the entry points the same by changing unexw32.c.
|
||||
case "$canonical" in
|
||||
x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,_start -Wl,-Map,./temacs.map" ;;
|
||||
x86_64-*-*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
|
||||
*) LD_SWITCH_SYSTEM_TEMACS="-Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 -Wl,-entry,__start -Wl,-Map,./temacs.map" ;;
|
||||
esac
|
||||
;;
|
||||
|
@ -1,3 +1,7 @@
|
||||
2013-12-31 Fabrice Popineau <fabrice.popineau@supelec.fr>
|
||||
|
||||
* inc/ms-w32.h (sys_kill): Fix prototype.
|
||||
|
||||
2013-12-30 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
* inc/ms-w32.h (umask) [emacs]: Redirect to sys_umask. (Bug#16299)
|
||||
|
@ -394,7 +394,7 @@ extern int setpgrp (int, int);
|
||||
extern int sigaction (int, const struct sigaction *, struct sigaction *);
|
||||
extern int alarm (int);
|
||||
|
||||
extern int sys_kill (int, int);
|
||||
extern int sys_kill (pid_t, int);
|
||||
|
||||
|
||||
/* For integration with MSDOS support. */
|
||||
|
@ -1,5 +1,17 @@
|
||||
2013-12-31 Fabrice Popineau <fabrice.popineau@supelec.fr>
|
||||
|
||||
* w32term.c (w32_initialize): Use LCID and LOWORD.
|
||||
|
||||
* w32proc.c (create_child): Use pid_t for 5th argument.
|
||||
(IsValidLocale): Don't provide prototype for MinGW64.
|
||||
(Fw32_get_valid_keyboard_layouts, Fw32_get_keyboard_layout)
|
||||
(Fw32_set_keyboard_layout): Use HKL and HIWORD/LOWORD.
|
||||
|
||||
* w32heap.c (allocate_heap) [_WIN64]: Use "ull", not "i64", which
|
||||
MinGW64 doesn't support.
|
||||
|
||||
* lisp.h (EMACS_INT) [_WIN64]: Define for the MinGW64 build.
|
||||
|
||||
* w32.c (set_named_security_info): New function.
|
||||
(acl_set_file): Fall back on set_named_security_info if
|
||||
set_file_security fails.
|
||||
|
@ -62,7 +62,7 @@ INLINE_HEADER_BEGIN
|
||||
pI - printf length modifier for EMACS_INT
|
||||
EMACS_UINT - unsigned variant of EMACS_INT */
|
||||
#ifndef EMACS_INT_MAX
|
||||
# if LONG_MAX < LLONG_MAX && defined WIDE_EMACS_INT
|
||||
# if LONG_MAX < LLONG_MAX && (defined(WIDE_EMACS_INT) || defined(_WIN64))
|
||||
typedef long long int EMACS_INT;
|
||||
typedef unsigned long long int EMACS_UINT;
|
||||
# define EMACS_INT_MAX LLONG_MAX
|
||||
|
@ -78,7 +78,7 @@ allocate_heap (void)
|
||||
while (!ptr && (base < end))
|
||||
{
|
||||
#ifdef _WIN64
|
||||
reserved_heap_size = min(end - base, 0x4000000000i64); /* Limit to 256Gb */
|
||||
reserved_heap_size = min(end - base, 0x4000000000ull); /* Limit to 256Gb */
|
||||
#else
|
||||
reserved_heap_size = end - base;
|
||||
#endif
|
||||
@ -96,7 +96,7 @@ static char *
|
||||
allocate_heap (void)
|
||||
{
|
||||
#ifdef _WIN64
|
||||
size_t size = 0x4000000000i64; /* start by asking for 32GB */
|
||||
size_t size = 0x4000000000ull; /* start by asking for 32GB */
|
||||
#else
|
||||
/* We used to start with 2GB here, but on Windows 7 that would leave
|
||||
too little room in the address space for threads started by
|
||||
|
@ -43,8 +43,9 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
||||
#undef kill
|
||||
|
||||
#include <windows.h>
|
||||
#ifdef __GNUC__
|
||||
/* This definition is missing from mingw32 headers. */
|
||||
#if defined(__GNUC__) && !defined(__MINGW64__)
|
||||
/* This definition is missing from mingw.org headers, but not MinGW64
|
||||
headers. */
|
||||
extern BOOL WINAPI IsValidLocale (LCID, DWORD);
|
||||
#endif
|
||||
|
||||
@ -1066,7 +1067,7 @@ static char * process_dir;
|
||||
|
||||
static BOOL
|
||||
create_child (char *exe, char *cmdline, char *env, int is_gui_app,
|
||||
int * pPid, child_process *cp)
|
||||
pid_t * pPid, child_process *cp)
|
||||
{
|
||||
STARTUPINFO start;
|
||||
SECURITY_ATTRIBUTES sec_attrs;
|
||||
@ -3084,10 +3085,10 @@ The return value is a list of pairs of language id and layout id. */)
|
||||
{
|
||||
while (--num_layouts >= 0)
|
||||
{
|
||||
DWORD kl = (DWORD) layouts[num_layouts];
|
||||
HKL kl = layouts[num_layouts];
|
||||
|
||||
obj = Fcons (Fcons (make_number (kl & 0xffff),
|
||||
make_number ((kl >> 16) & 0xffff)),
|
||||
obj = Fcons (Fcons (make_number (LOWORD (kl)),
|
||||
make_number (HIWORD (kl))),
|
||||
obj);
|
||||
}
|
||||
}
|
||||
@ -3102,10 +3103,10 @@ DEFUN ("w32-get-keyboard-layout", Fw32_get_keyboard_layout,
|
||||
The return value is the cons of the language id and the layout id. */)
|
||||
(void)
|
||||
{
|
||||
DWORD kl = (DWORD) GetKeyboardLayout (dwWindowsThreadId);
|
||||
HKL kl = GetKeyboardLayout (dwWindowsThreadId);
|
||||
|
||||
return Fcons (make_number (kl & 0xffff),
|
||||
make_number ((kl >> 16) & 0xffff));
|
||||
return Fcons (make_number (LOWORD (kl)),
|
||||
make_number (HIWORD (kl)));
|
||||
}
|
||||
|
||||
|
||||
@ -3116,14 +3117,14 @@ The keyboard layout setting affects interpretation of keyboard input.
|
||||
If successful, the new layout id is returned, otherwise nil. */)
|
||||
(Lisp_Object layout)
|
||||
{
|
||||
DWORD kl;
|
||||
HKL kl;
|
||||
|
||||
CHECK_CONS (layout);
|
||||
CHECK_NUMBER_CAR (layout);
|
||||
CHECK_NUMBER_CDR (layout);
|
||||
|
||||
kl = (XINT (XCAR (layout)) & 0xffff)
|
||||
| (XINT (XCDR (layout)) << 16);
|
||||
kl = (HKL) ((XINT (XCAR (layout)) & 0xffff)
|
||||
| (XINT (XCDR (layout)) << 16));
|
||||
|
||||
/* Synchronize layout with input thread. */
|
||||
if (dwWindowsThreadId)
|
||||
@ -3138,7 +3139,7 @@ If successful, the new layout id is returned, otherwise nil. */)
|
||||
return Qnil;
|
||||
}
|
||||
}
|
||||
else if (!ActivateKeyboardLayout ((HKL) kl, 0))
|
||||
else if (!ActivateKeyboardLayout (kl, 0))
|
||||
return Qnil;
|
||||
|
||||
return Fw32_get_keyboard_layout ();
|
||||
|
@ -6410,9 +6410,8 @@ w32_initialize (void)
|
||||
Fset_input_mode (Qnil, Qnil, make_number (2), Qnil);
|
||||
|
||||
{
|
||||
DWORD input_locale_id = ((DWORD_PTR) GetKeyboardLayout (0) & 0xffffffff);
|
||||
w32_keyboard_codepage =
|
||||
codepage_for_locale ((LCID) (input_locale_id & 0xffff));
|
||||
LCID input_locale_id = LOWORD (GetKeyboardLayout (0));
|
||||
w32_keyboard_codepage = codepage_for_locale (input_locale_id);
|
||||
}
|
||||
|
||||
/* Create the window thread - it will terminate itself when the app
|
||||
|
Loading…
Reference in New Issue
Block a user