-- | -- 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 ( writePreludeContents, cryptolTcContents ) where import System.Directory (getTemporaryDirectory) import System.IO (hClose, hPutStr, openTempFile) import Text.Heredoc (there) preludeContents :: String preludeContents = [there|lib/Cryptol.cry|] -- | Write the contents of the Prelude to a temporary file so that -- Cryptol can load the module. writePreludeContents :: IO FilePath writePreludeContents = do tmpdir <- getTemporaryDirectory (path, h) <- openTempFile tmpdir "Cryptol.cry" hPutStr h preludeContents hClose h return path cryptolTcContents :: String cryptolTcContents = [there|lib/CryptolTC.z3|]