diff options
Diffstat (limited to 'dev-lang/ghc/files/ghc-8.2.1_rc1-win32-cross-2-hack.patch')
-rw-r--r-- | dev-lang/ghc/files/ghc-8.2.1_rc1-win32-cross-2-hack.patch | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/dev-lang/ghc/files/ghc-8.2.1_rc1-win32-cross-2-hack.patch b/dev-lang/ghc/files/ghc-8.2.1_rc1-win32-cross-2-hack.patch new file mode 100644 index 000000000000..6fdcf2d1278f --- /dev/null +++ b/dev-lang/ghc/files/ghc-8.2.1_rc1-win32-cross-2-hack.patch @@ -0,0 +1,144 @@ +hsc2hs can't detect values at compile-time if those are +declared as pointers: https://github.com/haskell/win32/issues/88 + +This patch is a huge hack: we encode absolute vaues from <windows.h> +diff --git a/Graphics/Win32/GDI/Types.hsc b/Graphics/Win32/GDI/Types.hsc +index c363530..8643cee 100644 +--- a/Graphics/Win32/GDI/Types.hsc ++++ b/Graphics/Win32/GDI/Types.hsc +@@ -216,10 +216,10 @@ type HWND = HANDLE + type MbHWND = Maybe HWND + + #{enum HWND, castUINTPtrToPtr +- , hWND_BOTTOM = (UINT_PTR)HWND_BOTTOM +- , hWND_NOTOPMOST = (UINT_PTR)HWND_NOTOPMOST +- , hWND_TOP = (UINT_PTR)HWND_TOP +- , hWND_TOPMOST = (UINT_PTR)HWND_TOPMOST ++ , hWND_BOTTOM = (UINT_PTR)(INT_PTR)(1) ++ , hWND_NOTOPMOST = (UINT_PTR)(INT_PTR)(-2) ++ , hWND_TOP = (UINT_PTR)(INT_PTR)(0) ++ , hWND_TOPMOST = (UINT_PTR)(INT_PTR)(-1) + } + + type HMENU = HANDLE +diff --git a/Graphics/Win32/Misc.hsc b/Graphics/Win32/Misc.hsc +index 1248b5a..c791a20 100644 +--- a/Graphics/Win32/Misc.hsc ++++ b/Graphics/Win32/Misc.hsc +@@ -67,23 +67,23 @@ foreign import WINDOWS_CCONV unsafe "windows.h LoadIconW" + c_LoadIcon :: HINSTANCE -> Icon -> IO HICON + + #{enum Cursor, castUINTPtrToPtr +- , iDC_ARROW = (UINT_PTR)IDC_ARROW +- , iDC_IBEAM = (UINT_PTR)IDC_IBEAM +- , iDC_WAIT = (UINT_PTR)IDC_WAIT +- , iDC_CROSS = (UINT_PTR)IDC_CROSS +- , iDC_UPARROW = (UINT_PTR)IDC_UPARROW +- , iDC_SIZENWSE = (UINT_PTR)IDC_SIZENWSE +- , iDC_SIZENESW = (UINT_PTR)IDC_SIZENESW +- , iDC_SIZEWE = (UINT_PTR)IDC_SIZEWE +- , iDC_SIZENS = (UINT_PTR)IDC_SIZENS ++ , iDC_ARROW = (UINT_PTR)(32512) ++ , iDC_IBEAM = (UINT_PTR)(32513) ++ , iDC_WAIT = (UINT_PTR)(32514) ++ , iDC_CROSS = (UINT_PTR)(32515) ++ , iDC_UPARROW = (UINT_PTR)(32516) ++ , iDC_SIZENWSE = (UINT_PTR)(32642) ++ , iDC_SIZENESW = (UINT_PTR)(32643) ++ , iDC_SIZEWE = (UINT_PTR)(32644) ++ , iDC_SIZENS = (UINT_PTR)(32645) + } + + #{enum Icon, castUINTPtrToPtr +- , iDI_APPLICATION = (UINT_PTR)IDI_APPLICATION +- , iDI_HAND = (UINT_PTR)IDI_HAND +- , iDI_QUESTION = (UINT_PTR)IDI_QUESTION +- , iDI_EXCLAMATION = (UINT_PTR)IDI_EXCLAMATION +- , iDI_ASTERISK = (UINT_PTR)IDI_ASTERISK ++ , iDI_APPLICATION = (UINT_PTR)(32512) ++ , iDI_HAND = (UINT_PTR)(32513) ++ , iDI_QUESTION = (UINT_PTR)(32514) ++ , iDI_EXCLAMATION = (UINT_PTR)(32515) ++ , iDI_ASTERISK = (UINT_PTR)(32516) + } + + ---------------------------------------------------------------- +diff --git a/Graphics/Win32/Resource.hsc b/Graphics/Win32/Resource.hsc +index e8ad565..ca58fa2 100644 +--- a/Graphics/Win32/Resource.hsc ++++ b/Graphics/Win32/Resource.hsc +@@ -61,23 +61,23 @@ foreign import WINDOWS_CCONV unsafe "windows.h EndUpdateResourceW" + type ResourceType = LPCTSTR + + #{enum ResourceType, castUINTPtrToPtr +- , rT_ACCELERATOR = (UINT_PTR)RT_ACCELERATOR // Accelerator table +- , rT_ANICURSOR = (UINT_PTR)RT_ANICURSOR // Animated cursor +- , rT_ANIICON = (UINT_PTR)RT_ANIICON // Animated icon +- , rT_BITMAP = (UINT_PTR)RT_BITMAP // Bitmap resource +- , rT_CURSOR = (UINT_PTR)RT_CURSOR // Hardware-dependent cursor resource +- , rT_DIALOG = (UINT_PTR)RT_DIALOG // Dialog box +- , rT_FONT = (UINT_PTR)RT_FONT // Font resource +- , rT_FONTDIR = (UINT_PTR)RT_FONTDIR // Font directory resource +- , rT_GROUP_CURSOR = (UINT_PTR)RT_GROUP_CURSOR // Hardware-independent cursor resource +- , rT_GROUP_ICON = (UINT_PTR)RT_GROUP_ICON // Hardware-independent icon resource +- , rT_HTML = (UINT_PTR)RT_HTML // HTML document +- , rT_ICON = (UINT_PTR)RT_ICON // Hardware-dependent icon resource +- , rT_MENU = (UINT_PTR)RT_MENU // Menu resource +- , rT_MESSAGETABLE = (UINT_PTR)RT_MESSAGETABLE // Message-table entry +- , rT_RCDATA = (UINT_PTR)RT_RCDATA // Application-defined resource (raw data) +- , rT_STRING = (UINT_PTR)RT_STRING // String-table entry +- , rT_VERSION = (UINT_PTR)RT_VERSION // Version resource ++ , rT_ACCELERATOR = (UINT_PTR)(9) ++ , rT_ANICURSOR = (UINT_PTR)(21) ++ , rT_ANIICON = (UINT_PTR)(22) ++ , rT_BITMAP = (UINT_PTR)(2) ++ , rT_CURSOR = (UINT_PTR)(1) ++ , rT_DIALOG = (UINT_PTR)(5) ++ , rT_FONT = (UINT_PTR)(8) ++ , rT_FONTDIR = (UINT_PTR)(7) ++ , rT_GROUP_CURSOR = (UINT_PTR)(1 + DIFFERENCE) ++ , rT_GROUP_ICON = (UINT_PTR)(3 + DIFFERENCE) ++ , rT_HTML = (UINT_PTR)(23) ++ , rT_ICON = (UINT_PTR)(3) ++ , rT_MENU = (UINT_PTR)(4) ++ , rT_MESSAGETABLE = (UINT_PTR)(11) ++ , rT_RCDATA = (UINT_PTR)(10) ++ , rT_STRING = (UINT_PTR)(6) ++ , rT_VERSION = (UINT_PTR)(16) + } + + findResource :: HMODULE -> String -> ResourceType -> IO HRSRC +diff --git a/Graphics/Win32/Window/PostMessage.hsc b/Graphics/Win32/Window/PostMessage.hsc +index 7f4c9f0..609f3f6 100644 +--- a/Graphics/Win32/Window/PostMessage.hsc ++++ b/Graphics/Win32/Window/PostMessage.hsc +@@ -41,7 +41,7 @@ foreign import WINDOWS_CCONV "windows.h PostThreadMessageW" + c_PostThreadMessage :: DWORD -> WindowMessage -> WPARAM -> LPARAM -> IO BOOL
+
+ #{enum HWND, castUINTPtrToPtr
+- , hWND_BROADCAST = (UINT_PTR)HWND_BROADCAST
++ , hWND_BROADCAST = (UINT_PTR)(0xffff)
+ }
+
+ foreign import WINDOWS_CCONV "windows.h InSendMessage"
+diff --git a/System/Win32/Registry.hsc b/System/Win32/Registry.hsc +index afbb011..c7edfc1 100644 +--- a/System/Win32/Registry.hsc ++++ b/System/Win32/Registry.hsc +@@ -80,11 +80,11 @@ import System.Win32.Types (castUINTPtrToPtr, failUnlessSuccessOr, maybePtr) + #include <windows.h> + + #{enum HKEY, (unsafePerformIO . newForeignHANDLE . castUINTPtrToPtr) +- , hKEY_CLASSES_ROOT = (UINT_PTR)HKEY_CLASSES_ROOT +- , hKEY_CURRENT_CONFIG = (UINT_PTR)HKEY_CURRENT_CONFIG +- , hKEY_CURRENT_USER = (UINT_PTR)HKEY_CURRENT_USER +- , hKEY_LOCAL_MACHINE = (UINT_PTR)HKEY_LOCAL_MACHINE +- , hKEY_USERS = (UINT_PTR)HKEY_USERS ++ , hKEY_CLASSES_ROOT = (UINT_PTR)(0x80000000) ++ , hKEY_CURRENT_CONFIG = (UINT_PTR)(0x80000005) ++ , hKEY_CURRENT_USER = (UINT_PTR)(0x80000001) ++ , hKEY_LOCAL_MACHINE = (UINT_PTR)(0x80000002) ++ , hKEY_USERS = (UINT_PTR)(0x80000003) + } + -- , PKEYERFORMANCE_DATA NT only + -- , HKEY_DYN_DATA 95/98 only |