ghc-mod/Cabal.hs

42 lines
1.4 KiB
Haskell
Raw Normal View History

2012-03-23 17:05:38 +00:00
{-# LANGUAGE OverloadedStrings, RecordWildCards #-}
2012-02-06 09:07:32 +00:00
2013-03-02 07:14:55 +00:00
module Cabal (fromCabal) where
2011-05-24 07:18:22 +00:00
2013-03-01 06:25:43 +00:00
import CabalApi
import Distribution.PackageDescription (BuildInfo(..), usedExtensions)
import Distribution.Text (display)
2011-05-24 07:18:22 +00:00
import System.FilePath
import Types
----------------------------------------------------------------
2013-03-02 07:14:55 +00:00
fromCabal :: [GHCOption]
-> Cradle
-> IO ([GHCOption]
,[IncludeDir]
,[Package]
,[LangExt])
fromCabal ghcOptions cradle = do
2013-02-12 07:24:33 +00:00
cabal <- cabalParseFile cfile
2013-03-01 04:14:46 +00:00
let binfo@BuildInfo{..} = cabalBuildInfo cabal
let exts = map (("-X" ++) . display) $ usedExtensions binfo
lang = maybe "-XHaskell98" (("-X" ++) . display) defaultLanguage
2013-02-12 07:24:33 +00:00
libs = map ("-l" ++) extraLibs
libDirs = map ("-L" ++) extraLibDirs
gopts = ghcOptions ++ exts ++ [lang] ++ libs ++ libDirs
idirs = case hsSourceDirs of
[] -> [cdir,owdir]
dirs -> map (cdir </>) dirs ++ [owdir]
2013-03-01 06:25:43 +00:00
let depPkgs = removeMe cfile $ cabalAllDependPackages cabal
hdrExts = cabalAllExtentions cabal
return (gopts,idirs,depPkgs,hdrExts)
2013-03-02 07:14:55 +00:00
where
owdir = cradleCurrentDir cradle
Just cdir = cradleCabalDir cradle
Just cfile = cradleCabalDir cradle
2011-05-24 07:18:22 +00:00
removeMe :: FilePath -> [String] -> [String]
removeMe cabalfile = filter (/= me)
where
me = dropExtension $ takeFileName cabalfile