Commit 498467cf authored by Ian Lynagh's avatar Ian Lynagh

Fixes for NetBSD

Based on a patch from Arnaud Degroote <degroote@NetBSD.org> in
trac #5480.
parent 3a907bff
......@@ -224,7 +224,10 @@ AC_DEFUN([FPTOOLS_SET_HASKELL_PLATFORM_VARS],
openbsd)
test -z "[$]2" || eval "[$]2=OSOpenBSD"
;;
netbsd|dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|cygwin32|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix|haiku)
netbsd)
test -z "[$]2" || eval "[$]2=OSNetBSD"
;;
dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|cygwin32|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix|haiku)
test -z "[$]2" || eval "[$]2=OSUnknown"
;;
*)
......
......@@ -1714,7 +1714,7 @@ linkBinary dflags o_files dep_packages = do
let
thread_opts | WayThreaded `elem` ways = [
#if !defined(mingw32_TARGET_OS) && !defined(freebsd_TARGET_OS) && !defined(openbsd_TARGET_OS) && !defined(haiku_TARGET_OS)
#if !defined(mingw32_TARGET_OS) && !defined(freebsd_TARGET_OS) && !defined(openbsd_TARGET_OS) && !defined(netbsd_TARGET_OS) && !defined(haiku_TARGET_OS)
"-lpthread"
#endif
#if defined(osf3_TARGET_OS)
......
......@@ -491,7 +491,7 @@ way_details =
-- the problems are our fault or theirs, but it seems that using the
-- alternative 1:1 threading library libthr works around it:
"-optl-lthr"
#elif defined(openbsd_TARGET_OS)
#elif defined(openbsd_TARGET_OS) || defined(netbsd_TARGET_OS)
"-optc-pthread"
, "-optl-pthread"
#elif defined(solaris2_TARGET_OS)
......@@ -509,7 +509,7 @@ way_details =
-- with -fPIC. Labels not in the current package are assumed to be in a DLL
-- different from the current one.
, "-fPIC"
#elif defined(openbsd_TARGET_OS)
#elif defined(openbsd_TARGET_OS) || defined(netbsd_TARGET_OS)
-- Without this, linking the shared libHSffi fails because
-- it uses pthread mutexes.
, "-optl-pthread"
......
......@@ -853,6 +853,7 @@ genCCall target dest_regs argsAndHints
OSMinGW32 -> panic "PPC.CodeGen.genCCall: not defined for this os"
OSFreeBSD -> panic "PPC.CodeGen.genCCall: not defined for this os"
OSOpenBSD -> panic "PPC.CodeGen.genCCall: not defined for this os"
OSNetBSD -> panic "PPC.CodeGen.genCCall: not defined for this os"
OSUnknown -> panic "PPC.CodeGen.genCCall: not defined for this os"
data GenCCallPlatform = GCPLinux | GCPDarwin
......
......@@ -55,6 +55,7 @@ data OS
| OSMinGW32
| OSFreeBSD
| OSOpenBSD
| OSNetBSD
deriving (Read, Show, Eq)
-- | ARM Instruction Set Architecture and Extensions
......@@ -90,6 +91,7 @@ osElfTarget :: OS -> Bool
osElfTarget OSLinux = True
osElfTarget OSFreeBSD = True
osElfTarget OSOpenBSD = True
osElfTarget OSNetBSD = True
osElfTarget OSSolaris2 = True
osElfTarget OSDarwin = False
osElfTarget OSMinGW32 = False
......
......@@ -118,6 +118,7 @@ SharedLibsPlatformList = \
i386-unknown-linux x86_64-unknown-linux \
i386-unknown-freebsd x86_64-unknown-freebsd \
i386-unknown-openbsd x86_64-unknown-openbsd \
i386-unknown-netbsd x86_64-unknown-netbsd \
i386-unknown-mingw32 \
i386-apple-darwin x86_64-apple-darwin powerpc-apple-darwin
......
......@@ -272,7 +272,7 @@ heapCheckFail( void )
* genericRaise(), rather than raise(3).
*/
int genericRaise(int sig) {
#if defined(THREADED_RTS) && (defined(openbsd_HOST_OS) || defined(freebsd_HOST_OS) || defined(dragonfly_HOST_OS))
#if defined(THREADED_RTS) && (defined(openbsd_HOST_OS) || defined(freebsd_HOST_OS) || defined(dragonfly_HOST_OS) || defined(netbsd_HOST_OS))
return pthread_kill(pthread_self(), sig);
#else
return raise(sig);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment