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 ()