@@ -7,7 +7,7 @@ module Util.DynamicLinker (ForeignFun(..), DynamicLib(..), tryLoadLib, tryLoadFn
77import Foreign.LibFFI
88import Foreign.Ptr (Ptr(), nullPtr, FunPtr, nullFunPtr, castPtrToFunPtr)
99import System.Directory
10−#ifndef WINDOWS
10+#ifndef mingw32_HOST_OS
1111import System.Posix.DynamicLinker
1212import System.FilePath.Posix ((</>))
1313#else
@@ -19,16 +19,14 @@ type DL = HMODULE
1919#endif
2020
2121hostDynamicLibExt :: String
22−#ifdef LINUX
22+#if defined(linux_HOST_OS) || defined(freebsd_HOST_OS) \
23+ || defined(dragonfly_HOST_OS) || defined(openbsd_HOST_OS) \
24+ || defined(netbsd_HOST_OS)
2325hostDynamicLibExt = "so"
24−#elif MACOSX
26+#elif defined(darwin_HOST_OS)
2527hostDynamicLibExt = "dylib"
26−#elif WINDOWS
28+#elif defined(mingw32_HOST_OS)
2729hostDynamicLibExt = "dll"
28−#elif FREEBSD
29−hostDynamicLibExt = "so"
30−#elif DRAGONFLY
31−hostDynamicLibExt = "so"
3230#else
3331hostDynamicLibExt = error $ unwords
3432 [ "Undefined file extension for dynamic libraries"
@@ -61,7 +59,7 @@ libFileName dirs lib = do let names = [lib, lib ++ "." ++ hostDynamicLibExt]
6159 map ("."</>) names ++ [d </> f | d <- cwd:dirs, f <- names]
6260 return $ maybe (lib ++ "." ++ hostDynamicLibExt) id found
6361
64−#ifndef WINDOWS
62+#ifndef mingw32_HOST_OS
6563tryLoadLib :: [FilePath] -> String -> IO (Maybe DynamicLib)
6664tryLoadLib dirs lib = do filename <- libFileName dirs lib
6765 handle <- dlopen filename [RTLD_NOW, RTLD_GLOBAL]