]> gitweb.factorcode.org Git - factor.git/commitdiff
Windows: Add two new targets, x86-32-vista and x86-64-vista for bjourne's
authorDoug Coleman <doug.coleman@gmail.com>
Sun, 11 May 2014 00:58:53 +0000 (17:58 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 11 May 2014 01:13:20 +0000 (18:13 -0700)
ctrl-c patch. We still support Windows XP by default for now. Closes

Nmakefile
vm/os-windows.cpp
vm/os-windows.hpp

index b66e6dcf701374bb8819c6af67436cf1ce03a756..02dbfd4fa981f1cad874a4a1b662cf8a59682164 100755 (executable)
--- a/Nmakefile
+++ b/Nmakefile
@@ -6,17 +6,28 @@ BOOTIMAGE_VERSION = latest
 
 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
+
+!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-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
@@ -103,6 +114,8 @@ default:
        @echo Where platform is one of:
        @echo x86-32
        @echo x86-64
+       @echo x86-32-vista
+       @echo x86-64-vista
        @exit 1
 
 x86-32:
@@ -111,6 +124,12 @@ x86-32:
 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
@@ -120,6 +139,6 @@ clean:
        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
 
 .SUFFIXES: .rs
index 64e425b13ad255fe312a09c4bb83293b706dcd9d..f83f67f91d6133e2a67bfa5dc6234dbb62e50b18 100644 (file)
@@ -254,6 +254,8 @@ VM_C_API LONG exception_handler(PEXCEPTION_RECORD e, void* frame, PCONTEXT c,
    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();
@@ -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) {
   switch (dwCtrlType) {
index a83ea2ff8d27c278bec33bfc8d203e979495deae..2dab596c4da41d8d200979608efa0102f82a0633 100644 (file)
@@ -5,8 +5,11 @@
 #include <wchar.h>
 #endif
 
+#if _WIN32_WINNT != 0x0600
 #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
 #define UNICODE