on 43ffd25 help sign in
Idris-dev/Setup.hs
53 lines 2.0 kB history raw
1import Distribution.Simple
2import Distribution.Simple.InstallDirs as I
3import Distribution.Simple.LocalBuildInfo as L
4import qualified Distribution.Simple.Setup as S
5import qualified Distribution.Simple.Program as P
6import Distribution.PackageDescription
8import System.Exit
9import System.FilePath ((</>))
10import System.Process
12-- After Idris is built, we need to check and install the prelude and other libs
14make verbosity = P.runProgramInvocation verbosity . P.simpleProgramInvocation "make"
16cleanStdLib verbosity
17 = make verbosity [ "-C", "lib", "clean" ]
19installStdLib pkg local verbosity copy
20 = do let dirs = L.absoluteInstallDirs pkg local copy
21 let idir = datadir dirs
22 let icmd = ".." </> buildDir local </> "idris" </> "idris"
23 putStrLn $ "Installing libraries in " ++ idir
24 make verbosity
25 [ "-C", "lib", "install"
26 , "TARGET=" ++ idir
27 , "IDRIS=" ++ icmd
28 ]
30checkStdLib local verbosity
31 = do let icmd = ".." </> buildDir local </> "idris" </> "idris"
32 putStrLn $ "Building libraries..."
33 make verbosity
34 [ "-C", "lib", "check"
35 , "IDRIS=" ++ icmd
36 ]
38-- Install libraries during both copy and install
39-- See http://hackage.haskell.org/trac/hackage/ticket/718
40main = defaultMainWithHooks $ simpleUserHooks
41 { postCopy = \ _ flags pkg lbi -> do
42 installStdLib pkg lbi (S.fromFlag $ S.copyVerbosity flags)
43 (S.fromFlag $ S.copyDest flags)
44 , postInst = \ _ flags pkg lbi -> do
45 installStdLib pkg lbi (S.fromFlag $ S.installVerbosity flags)
46 NoCopyDest
47 , postClean = \ _ flags _ _ -> do
48 cleanStdLib (S.fromFlag $ S.cleanVerbosity flags)
49 , postBuild = \ _ flags _ lbi -> do
50 checkStdLib lbi (S.fromFlag $ S.buildVerbosity flags)
51 }