   | OptimisationLevel  !Int             -- ^ level of optimisation to apply (1-4, default 4)
   | Target             !Compute         -- ^ compilation target, otherwise determined from context
   | FallbackStrategy   !JITFallback     -- ^ fallback strategy if matching cubin not found
-#if CUDA_VERSION >= 5050
-  | GenerateDebugInfo                   -- ^ generate debug info (-g)
-  | GenerateLineInfo                    -- ^ generate line number information (-lineinfo)
-  | Verbose                             -- ^ verbose log messages
-#endif
+  | GenerateDebugInfo                   -- ^ generate debug info (-g) (requires cuda >= 5.5)
+  | GenerateLineInfo                    -- ^ generate line number information (-lineinfo) (requires cuda >= 5.5)
+  | Verbose                             -- ^ verbose log messages (requires cuda >= 5.5)
   deriving (Show)
 
 -- |

        , (JIT_INFO_LOG_BUFFER_SIZE_BYTES,  logSize)
        , (JIT_ERROR_LOG_BUFFER_SIZE_BYTES, logSize)
        , (JIT_INFO_LOG_BUFFER,  unsafeCoerce (p_ilog :: CString))
        , (JIT_ERROR_LOG_BUFFER, unsafeCoerce (p_elog :: CString)) ] ++ map unpack options

  withArray (map cFromEnum opt)    $ \p_opts -> do
  withArray (map unsafeCoerce val) $ \p_vals -> do


import Control.Monad                            (liftM)
import Control.Exception                        (throwIO)
import Debug.Trace                              (trace)
import Data.Maybe                               (mapMaybe)
import Data.ByteString.Char8                    (ByteString)
import qualified Data.ByteString.Char8          as B
import qualified Data.ByteString.Internal       as B
