implemented Setup.hs to build boehm cpp libs and install them;
[hs-boehmgc.git] / Setup.hs
1 import Data.Maybe
2
3 import Distribution.Simple
4 import Distribution.Simple.LocalBuildInfo
5 import Distribution.PackageDescription
6
7 import System.Directory(getCurrentDirectory)
8 import System.Process
9 import Debug.Trace
10
11 main = defaultMainWithHooks simpleUserHooks { confHook = myConfHook }
12
13 myConfHook (pkg0, pbi) flags = do
14  
15  installDir <- buildBoehm
16
17  lbi <- confHook simpleUserHooks (pkg0, pbi) flags
18  let lpd        = localPkgDescr lbi
19  let lib        = fromJust (library lpd)
20  let libbi      = libBuildInfo lib
21  let custom_bi  = customFieldsBI libbi
22  let libbi' = libbi
23       {  extraLibDirs = (installDir ++ "/lib") : extraLibDirs libbi,
24          includeDirs  = (installDir ++ "/include") : includeDirs libbi
25       }
26  let lib' = lib { libBuildInfo = libbi' }
27  let lpd' = lpd { library = Just lib' }
28  return $ lbi { localPkgDescr = lpd' }
29
30 buildBoehm :: IO String
31 buildBoehm = do
32   wd <- getCurrentDirectory
33   let installDir = wd ++ "/gc"
34   print ("Installing Boehm to: " ++ installDir)
35   _ <- runCommand ("./makeboehm.sh " ++ installDir) >>= waitForProcess
36   return installDir