22 lines
646 B
Haskell
22 lines
646 B
Haskell
import Development.Shake
|
|
import Development.Shake.Command
|
|
import Development.Shake.FilePath
|
|
import Development.Shake.Util
|
|
|
|
main = shakeArgs shakeOptions $ do
|
|
action $ do
|
|
sourceFiles <- getDirectoryFiles "" ["//*.scm"]
|
|
need $ (-<.> "cps") <$> sourceFiles
|
|
"*.cps" %> \out -> do
|
|
withTempFile $ \temp_cps -> do
|
|
let scm = out -<.> "scm"
|
|
need [scm]
|
|
cmd_
|
|
"guild compile -O0 -Ocps -t cps -o" [temp_cps]
|
|
[scm]
|
|
cmd_ (FileStdout out)
|
|
(Stdin ";; -*- mode:scheme -*-\n") "cat -" [temp_cps]
|
|
phony "clean" $ do
|
|
removeFilesAfter ".shake" ["//*"]
|
|
liftIO $ removeFiles "." ["*.cps","*.go"]
|