Windows: Add two new targets, x86-32-vista and x86-64-vista for bjourne's

ctrl-c patch. We still support Windows XP by default for now. Closes
db4
Doug Coleman 2014-05-10 17:58:53 -07:00
parent 0226718a82
commit c3210f9f4f
3 changed files with 34 additions and 7 deletions

View File

@ -6,17 +6,28 @@ BOOTIMAGE_VERSION = latest
LINK_FLAGS = /nologo shell32.lib LINK_FLAGS = /nologo shell32.lib
CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS
CL_FLAGS_VISTA = /D_WIN32_WINNT=0x0600
!IF DEFINED(DEBUG)
LINK_FLAGS = $(LINK_FLAGS) /DEBUG
CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
!ENDIF
!IF "$(PLATFORM)" == "x86-32" !IF "$(PLATFORM)" == "x86-32"
LINK_FLAGS = $(LINK_FLAGS) /safeseh LINK_FLAGS = $(LINK_FLAGS) /safeseh
PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
!ELSEIF "$(PLATFORM)" == "x86-32-vista"
LINK_FLAGS = $(LINK_FLAGS) /safeseh
CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
!ELSEIF "$(PLATFORM)" == "x86-64" !ELSEIF "$(PLATFORM)" == "x86-64"
PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
!ELSEIF "$(PLATFORM)" == "x86-64-vista"
CL_FLAGS = $(CL_FLAGS) $(CL_FLAGS_VISTA)
PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
!ENDIF
!IF DEFINED(DEBUG)
LINK_FLAGS = $(LINK_FLAGS) /DEBUG
CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
!ENDIF !ENDIF
ML_FLAGS = /nologo /safeseh ML_FLAGS = /nologo /safeseh
@ -103,6 +114,8 @@ default:
@echo Where platform is one of: @echo Where platform is one of:
@echo x86-32 @echo x86-32
@echo x86-64 @echo x86-64
@echo x86-32-vista
@echo x86-64-vista
@exit 1 @exit 1
x86-32: x86-32:
@ -111,6 +124,12 @@ x86-32:
x86-64: x86-64:
nmake /nologo PLATFORM=x86-64 /f Nmakefile all nmake /nologo PLATFORM=x86-64 /f Nmakefile all
x86-32-vista:
nmake /nologo PLATFORM=x86-32-vista /f Nmakefile all
x86-64-vista:
nmake /nologo PLATFORM=x86-64-vista /f Nmakefile all
clean: clean:
del vm\*.obj del vm\*.obj
if exist factor.lib del factor.lib if exist factor.lib del factor.lib
@ -120,6 +139,6 @@ clean:
if exist factor.dll del factor.dll if exist factor.dll del factor.dll
if exist factor.dll.lib del factor.dll.lib if exist factor.dll.lib del factor.dll.lib
.PHONY: all default x86-32 x86-64 clean .PHONY: all default x86-32 x86-64 x86-32-vista x86-64-vista clean
.SUFFIXES: .rs .SUFFIXES: .rs

View File

@ -254,6 +254,8 @@ VM_C_API LONG exception_handler(PEXCEPTION_RECORD e, void* frame, PCONTEXT c,
cancellation requests to unblock the thread. */ cancellation requests to unblock the thread. */
VOID CALLBACK dummy_cb (ULONG_PTR dwParam) { } VOID CALLBACK dummy_cb (ULONG_PTR dwParam) { }
// CancelSynchronousIo is not in Windows XP
#if _WIN32_WINNT >= 0x0600
static void wake_up_thread(HANDLE thread) { static void wake_up_thread(HANDLE thread) {
if (!CancelSynchronousIo(thread)) { if (!CancelSynchronousIo(thread)) {
DWORD err = GetLastError(); DWORD err = GetLastError();
@ -268,6 +270,9 @@ static void wake_up_thread(HANDLE thread) {
} }
} }
} }
#else
static void wake_up_thread(HANDLE thread) {}
#endif
static BOOL WINAPI ctrl_handler(DWORD dwCtrlType) { static BOOL WINAPI ctrl_handler(DWORD dwCtrlType) {
switch (dwCtrlType) { switch (dwCtrlType) {

View File

@ -5,8 +5,11 @@
#include <wchar.h> #include <wchar.h>
#endif #endif
#if _WIN32_WINNT != 0x0600
#undef _WIN32_WINNT #undef _WIN32_WINNT
#define _WIN32_WINNT 0x0501 // For AddVectoredExceptionHandler #define _WIN32_WINNT 0x0501 // For AddVectoredExceptionHandler, WinXP support
//#define _WIN32_WINNT 0x0600 // For CancelSynchronousIo
#endif
#ifndef UNICODE #ifndef UNICODE
#define UNICODE #define UNICODE