lhc-0.10: src/GhcMain.hs
module Main (main) where
import Paths_lhc
import qualified Data.Version as Version
import System.Info
import System.Directory
-- Standard Haskell libraries
import System.IO
import System.Environment
import System.Exit
import System.FilePath
import Control.Monad
import Data.List
import Data.Maybe
import Data.Word (Word)
import Foreign.Storable (sizeOf)
import System.Cmd
import qualified LhcMain as Lhc
getLibdir
= do appdir <- getAppUserDataDirectory "lhc"
let targetARCH = arch
targetOS = os
let subdir = targetARCH ++ '-':targetOS ++ '-':Version.showVersion version
return (appdir </> subdir)
main :: IO ()
main = do Lhc.tryMain -- This call will terminate the program if it recognizes the command arguments.
ghcMain
ghcMain :: IO ()
ghcMain = do libdir <- getLibdir
args <- getArgs
let wordSize = sizeOf (undefined :: Word)
system $ unwords (["ghc","-fext-core","-B"++libdir,"-no-user-package-conf","-D__LHC__"
,"-DWORD_SIZE="++show wordSize
,"-DWORD_SIZE_IN_BITS="++show (wordSize*8)] ++ args)
return ()