-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSetup.hs
More file actions
57 lines (52 loc) · 1.86 KB
/
Setup.hs
File metadata and controls
57 lines (52 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import Data.Maybe (fromJust)
import Distribution.PackageDescription
import Distribution.Simple
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.Setup
import System.Process
import System.Directory
redCol = "\ESC[31m"
resetCol = "\ESC[0m"
main :: IO ()
main =
defaultMainWithHooks
simpleUserHooks
{ preConf = buildBackendPreConf,
confHook = addExtraLibs,
preBuild = buildBackendPreBuild
}
buildBackendPreConf :: Args -> ConfigFlags -> IO HookedBuildInfo
buildBackendPreConf _ _ = do
putStrLn $ redCol ++ ">> Running Pre-Configure Hook <<" ++ resetCol
readProcess "make" ["--directory=backend"] "" >>= putStrLn
putStrLn $ redCol ++ ">> Pre-Configure Hook Complete <<" ++ resetCol
return emptyHookedBuildInfo
buildBackendPreBuild :: Args -> BuildFlags -> IO HookedBuildInfo
buildBackendPreBuild _ _ = do
putStrLn $ redCol ++ ">> Running Pre-Build Hook <<" ++ resetCol
readProcess "make" ["--directory=backend"] "" >>= putStrLn
putStrLn $ redCol ++ ">> Pre-Build Hook Complete <<" ++ resetCol
return emptyHookedBuildInfo
addExtraLibs ::
(GenericPackageDescription, HookedBuildInfo) ->
ConfigFlags ->
IO LocalBuildInfo
addExtraLibs (description, buildInfo) flags = do
localBuildInfo <- confHook simpleUserHooks (description, buildInfo) flags
let packageDescription = localPkgDescr localBuildInfo
lib = fromJust $ library packageDescription
libraryBuildInfo = libBuildInfo lib
dir <- getCurrentDirectory
return
localBuildInfo
{ localPkgDescr =
packageDescription
{ library =
Just $ lib
{ libBuildInfo =
libraryBuildInfo
{ extraLibDirs = ("/usr/local/lib") : (dir ++ "/backend/lib") : extraLibDirs libraryBuildInfo
}
}
}
}