Build fix for iOS; fixes #7759
authorIan Lynagh <ian@well-typed.com>
Sun, 21 Apr 2013 17:07:58 +0000 (18:07 +0100)
committerIan Lynagh <ian@well-typed.com>
Sun, 21 Apr 2013 17:07:58 +0000 (18:07 +0100)
Patch from Stephen Blackheath.

The issue here is that the #defines EVFILT_READ and EVFILT_WRITE have
the values -1 and -2. The original code translates that to
filterRead = Filter -1 which is wrong Haskell and fails to compile.
The modified code produces the correct code filterRead = Filter (-1)

GHC/Event/KQueue.hsc
cbits/DarwinUtils.c

index d157f64..fc1d679 100644 (file)
@@ -197,10 +197,10 @@ newtype Filter = Filter Word16
 #endif
     deriving (Bits, Eq, Num, Show, Storable)
 
-#{enum Filter, Filter
- , filterRead   = EVFILT_READ
- , filterWrite  = EVFILT_WRITE
- }
+filterRead :: Filter
+filterRead = Filter (#const EVFILT_READ)
+filterWrite :: Filter
+filterWrite  = Filter (#const EVFILT_WRITE)
 
 data TimeSpec = TimeSpec {
       tv_sec  :: {-# UNPACK #-} !CTime
index de1f352..d080934 100644 (file)
@@ -1,6 +1,7 @@
 #include "HsBase.h"
 
-#ifdef darwin_HOST_OS
+#if defined(darwin_HOST_OS) || defined(ios_HOST_OS)
+#include <mach/mach_time.h>
 
 static double scaling_factor = 0.0;