X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=hs-boehmgc.git;a=blobdiff_plain;f=Setup.hs;fp=Setup.hs;h=5eb2d0419d235e9b516df9fd9829ffeb1cd147ce;hp=0000000000000000000000000000000000000000;hb=324587ba93dc77f37406d41fd2a20d0e0d94fb1d;hpb=2a4ea609491b225a1ceb06da70396e93916f137a diff --git a/Setup.hs b/Setup.hs new file mode 100644 index 0000000..5eb2d04 --- /dev/null +++ b/Setup.hs @@ -0,0 +1,36 @@ +import Data.Maybe + +import Distribution.Simple +import Distribution.Simple.LocalBuildInfo +import Distribution.PackageDescription + +import System.Directory(getCurrentDirectory) +import System.Process +import Debug.Trace + +main = defaultMainWithHooks simpleUserHooks { confHook = myConfHook } + +myConfHook (pkg0, pbi) flags = do + + installDir <- buildBoehm + + lbi <- confHook simpleUserHooks (pkg0, pbi) flags + let lpd = localPkgDescr lbi + let lib = fromJust (library lpd) + let libbi = libBuildInfo lib + let custom_bi = customFieldsBI libbi + let libbi' = libbi + { extraLibDirs = (installDir ++ "/lib") : extraLibDirs libbi, + includeDirs = (installDir ++ "/include") : includeDirs libbi + } + let lib' = lib { libBuildInfo = libbi' } + let lpd' = lpd { library = Just lib' } + return $ lbi { localPkgDescr = lpd' } + +buildBoehm :: IO String +buildBoehm = do + wd <- getCurrentDirectory + let installDir = wd ++ "/gc" + print ("Installing Boehm to: " ++ installDir) + _ <- runCommand ("./makeboehm.sh " ++ installDir) >>= waitForProcess + return installDir