    -- |
    -- Module      :  Cryptol.Prelude
    -- Copyright   :  (c) 2015-2016 Galois, Inc.
    -- License     :  BSD3
    -- Maintainer  :  cryptol@galois.com
    -- Stability   :  provisional
    -- Portability :  portable
    --
    -- Compile the prelude into the executable as a last resort

    {-# LANGUAGE Safe #-}
    {-# LANGUAGE CPP #-}
    {-# LANGUAGE QuasiQuotes #-}
    {-# LANGUAGE OverloadedStrings #-}

    module Cryptol.Prelude
      ( preludeContents
      , preludeReferenceContents
      , floatContents
      , arrayContents
      , suiteBContents
      , primeECContents
      , cryptolTcContents
      ) where

    import Data.ByteString(ByteString)
    import qualified Data.ByteString.Char8 as B
    import Text.Heredoc (there)

    preludeContents :: ByteString
    preludeContents :: ByteString
    preludeContents = String -> ByteString
    B.pack String
    [there|lib/Cryptol.cry|]

    preludeReferenceContents :: ByteString
    preludeReferenceContents :: ByteString
    preludeReferenceContents = String -> ByteString
    B.pack String
    [there|lib/Cryptol/Reference.cry|]

    floatContents :: ByteString
    floatContents :: ByteString
    floatContents = String -> ByteString
    B.pack String
    [there|lib/Float.cry|]

    arrayContents :: ByteString
    arrayContents :: ByteString
    arrayContents = String -> ByteString
    B.pack String
    [there|lib/Array.cry|]

    suiteBContents :: ByteString
    suiteBContents :: ByteString
    suiteBContents = String -> ByteString
    B.pack String
    [there|lib/SuiteB.cry|]

    primeECContents :: ByteString
    primeECContents :: ByteString
    primeECContents = String -> ByteString
    B.pack String
    [there|lib/PrimeEC.cry|]

    cryptolTcContents :: String
    cryptolTcContents :: String
    cryptolTcContents = String
    [there|lib/CryptolTC.z3|]