summaryrefslogtreecommitdiff
path: root/hadrian/src/Target.hs
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2018-10-23 14:20:13 -0400
committerBen Gamari <ben@smart-cactus.org>2018-10-23 14:20:13 -0400
commit94756201349685a34c4495addd3484fdfcc8b498 (patch)
treefd4a9cee20d3c2b79f56ded7e02fb0c01b26b6c9 /hadrian/src/Target.hs
parent575b35f4cdc18045bccd42d341d6f25d95c0696c (diff)
parent45f3bff7016a2a0cd9a5455a882ced984655e90b (diff)
downloadhaskell-94756201349685a34c4495addd3484fdfcc8b498.tar.gz
Add 'hadrian/' from commit '45f3bff7016a2a0cd9a5455a882ced984655e90b'
git-subtree-dir: hadrian git-subtree-mainline: 575b35f4cdc18045bccd42d341d6f25d95c0696c git-subtree-split: 45f3bff7016a2a0cd9a5455a882ced984655e90b
Diffstat (limited to 'hadrian/src/Target.hs')
-rw-r--r--hadrian/src/Target.hs26
1 files changed, 26 insertions, 0 deletions
diff --git a/hadrian/src/Target.hs b/hadrian/src/Target.hs
new file mode 100644
index 0000000000..30c8d98d14
--- /dev/null
+++ b/hadrian/src/Target.hs
@@ -0,0 +1,26 @@
+module Target (
+ Target, target, context, builder, inputs, outputs, trackArgument,
+ module Builder
+ ) where
+
+import Data.Char
+import Data.List.Extra
+
+import qualified Hadrian.Target as H
+import Hadrian.Target hiding (Target)
+
+import Builder
+import Context
+
+type Target = H.Target Context Builder
+
+-- | Some arguments do not affect build results and therefore do not need to be
+-- tracked by the build system. A notable example is "-jN" that controls Make's
+-- parallelism. Given a 'Target' and an argument, this function should return
+-- 'True' only if the argument needs to be tracked.
+trackArgument :: Target -> String -> Bool
+trackArgument target arg = case builder target of
+ (Make _) -> not $ threadArg arg
+ _ -> True
+ where
+ threadArg s = dropWhileEnd isDigit s `elem` ["-j", "MAKEFLAGS=-j", "THREADS="]