{- | This program shows some interesting facts about the host machine. -} module Main where import Common (getString, createExecutionEngine) import qualified LLVM.FFI.ExecutionEngine as EE import qualified LLVM.FFI.Target as Target import qualified LLVM.FFI.Support.Host as Host import qualified LLVM.FFI.Core as LLVM import qualified LLVM.Target.Native as Native import Foreign.C.String (withCString) import Control.Exception (bracket) main :: IO () main = do Native.initializeNativeTarget putStrLn =<< getString Host.getHostCPUName putStrLn LLVM.hostTriple modul <- withCString "host" LLVM.moduleCreateWithName withCString LLVM.hostTriple $ LLVM.setTarget modul bracket (createExecutionEngine modul) EE.disposeExecutionEngine $ \execEngine -> do td <- EE.getExecutionEngineTargetData execEngine putStrLn =<< getString (Target.copyStringRepOfTargetData td)