ctrl-c patch. We still support Windows XP by default for now. Closes
LINK_FLAGS = /nologo shell32.lib
CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS
LINK_FLAGS = /nologo shell32.lib
CL_FLAGS = /nologo /O2 /WX /W3 /D_CRT_SECURE_NO_WARNINGS
-
-!IF DEFINED(DEBUG)
-LINK_FLAGS = $(LINK_FLAGS) /DEBUG
-CL_FLAGS = $(CL_FLAGS) /Zi /DFACTOR_DEBUG
-!ENDIF
+CL_FLAGS_VISTA = /D_WIN32_WINNT=0x0600
!IF "$(PLATFORM)" == "x86-32"
LINK_FLAGS = $(LINK_FLAGS) /safeseh
PLAF_DLL_OBJS = vm\os-windows-x86.32.obj vm\safeseh.obj vm\cpu-x86.obj
!IF "$(PLATFORM)" == "x86-32"
LINK_FLAGS = $(LINK_FLAGS) /safeseh
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"
PLAF_DLL_OBJS = vm\os-windows-x86.64.obj vm\cpu-x86.obj
!ELSEIF "$(PLATFORM)" == "x86-64"
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
ML_FLAGS = /nologo /safeseh
!ENDIF
ML_FLAGS = /nologo /safeseh
@echo Where platform is one of:
@echo x86-32
@echo x86-64
@echo Where platform is one of:
@echo x86-32
@echo x86-64
+ @echo x86-32-vista
+ @echo x86-64-vista
x86-64:
nmake /nologo PLATFORM=x86-64 /f Nmakefile all
x86-64:
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:
del vm\*.obj
if exist factor.lib del factor.lib
clean:
del vm\*.obj
if exist factor.lib del factor.lib
if exist factor.dll del factor.dll
if exist factor.dll.lib del factor.dll.lib
if exist factor.dll del factor.dll
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
cancellation requests to unblock the thread. */
VOID CALLBACK dummy_cb (ULONG_PTR dwParam) { }
cancellation requests to unblock the thread. */
VOID CALLBACK dummy_cb (ULONG_PTR dwParam) { }
+// CancelSynchronousIo is not in Windows XP
+#if _WIN32_WINNT >= 0x0600
static void wake_up_thread(HANDLE thread) {
if (!CancelSynchronousIo(thread)) {
DWORD err = GetLastError();
static void wake_up_thread(HANDLE thread) {
if (!CancelSynchronousIo(thread)) {
DWORD err = GetLastError();
+#else
+static void wake_up_thread(HANDLE thread) {}
+#endif
static BOOL WINAPI ctrl_handler(DWORD dwCtrlType) {
switch (dwCtrlType) {
static BOOL WINAPI ctrl_handler(DWORD dwCtrlType) {
switch (dwCtrlType) {
#include <wchar.h>
#endif
#include <wchar.h>
#endif
+#if _WIN32_WINNT != 0x0600
-#define _WIN32_WINNT 0x0501 // For AddVectoredExceptionHandler
+#define _WIN32_WINNT 0x0501 // For AddVectoredExceptionHandler, WinXP support
+//#define _WIN32_WINNT 0x0600 // For CancelSynchronousIo
+#endif
#ifndef UNICODE
#define UNICODE
#ifndef UNICODE
#define UNICODE