summaryrefslogtreecommitdiff
path: root/hadrian/src/Rules/Clean.hs
diff options
context:
space:
mode:
Diffstat (limited to 'hadrian/src/Rules/Clean.hs')
-rw-r--r--hadrian/src/Rules/Clean.hs23
1 files changed, 23 insertions, 0 deletions
diff --git a/hadrian/src/Rules/Clean.hs b/hadrian/src/Rules/Clean.hs
new file mode 100644
index 0000000000..d11cbf5e53
--- /dev/null
+++ b/hadrian/src/Rules/Clean.hs
@@ -0,0 +1,23 @@
+module Rules.Clean (clean, cleanSourceTree, cleanRules) where
+
+import Base
+
+clean :: Action ()
+clean = do
+ cleanSourceTree
+ putBuild "| Remove Hadrian files..."
+ path <- buildRoot
+ removeDirectory $ path -/- generatedDir
+ removeFilesAfter path ["//*"]
+ putSuccess "| Done. "
+
+cleanSourceTree :: Action ()
+cleanSourceTree = do
+ path <- buildRoot
+ forM_ [Stage0 ..] $ removeDirectory . (path -/-) . stageString
+ removeDirectory inplaceBinPath
+ removeDirectory inplaceLibPath
+ removeDirectory "sdistprep"
+
+cleanRules :: Rules ()
+cleanRules = "clean" ~> clean