Don't use stdcall on Win64: It isn't supported; ccall is used instead
[ghc.git] / utils / ghc-pkg / Main.hs
index e63139e..83b5447 100644 (file)
@@ -69,6 +69,16 @@ import qualified System.Info(os)
 import System.Console.Terminfo as Terminfo
 #endif
 
+#ifdef mingw32_HOST_OS
+# if defined(i386_HOST_ARCH)
+#  define WINDOWS_CCONV stdcall
+# elif defined(x86_64_HOST_ARCH)
+#  define WINDOWS_CCONV ccall
+# else
+#  error Unknown mingw32 arch
+# endif
+#endif
+
 -- -----------------------------------------------------------------------------
 -- Entry point
 
@@ -1650,7 +1660,7 @@ getExecPath = try_size 2048 -- plenty, PATH_MAX is 512 under Win32.
           _ | ret < size -> fmap Just $ peekCWString buf
             | otherwise  -> try_size (size * 2)
 
-foreign import stdcall unsafe "windows.h GetModuleFileNameW"
+foreign import WINDOWS_CCONV unsafe "windows.h GetModuleFileNameW"
   c_GetModuleFileName :: Ptr () -> CWString -> Word32 -> IO Word32
 #else
 getLibDir :: IO (Maybe String)