llvm-ffi-17.0: example/Host.hs
{- |
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.TargetMachine as TargetMachine
import qualified LLVM.FFI.Target as Target
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 TargetMachine.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)