desert-0.1.0.0: src/Build.hs
module Build where
import Development.Shake
mlFiles :: [String]
mlFiles = ["//*.ml", "//*.mli", "//*.mll", "//*.mly"]
build :: IO ()
build = shakeArgs shakeOptions{shakeFiles="_build"} $ do
want ["_build/bin/main"]
want ["_build/bin/test"]
phony "clean" $ do
putNormal "Cleaning files in _build"
removeFilesAfter "_build" ["//*"]
phony "run" $ do
cmd "_build/bin/main"
phony "test" $ do
cmd "_build/bin/test"
"_build/bin/main" %> \_ -> do
cs <- getDirectoryFiles "" mlFiles
need cs
() <- cmd "ocamlbuild -use-ocamlfind main.native"
() <- cmd "mkdir -p _build/bin"
cmd "mv main.native _build/bin/main"
"_build/bin/test" %> \_ -> do
cs <- getDirectoryFiles "" mlFiles
need cs
() <- cmd "ocamlbuild -use-ocamlfind -package oUnit test.native"
() <- cmd "mkdir -p _build/bin"
cmd "mv test.native _build/bin/test"