diff options
Diffstat (limited to 'hadrian/src/Expression.hs')
-rw-r--r-- | hadrian/src/Expression.hs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/hadrian/src/Expression.hs b/hadrian/src/Expression.hs index d0b166fdaa..710986b749 100644 --- a/hadrian/src/Expression.hs +++ b/hadrian/src/Expression.hs @@ -1,9 +1,11 @@ +{-# LANGUAGE FlexibleContexts #-} + module Expression ( -- * Expressions Expr, Predicate, Args, Ways, -- ** Construction and modification - expr, exprIO, arg, remove, + expr, exprIO, arg, remove, cabalFlag, -- ** Predicates (?), stage, stage0, stage1, stage2, notStage0, threadedBootstrapper, @@ -131,3 +133,11 @@ notPackage = notM . package -- | Is a library package currently being built? libraryPackage :: Predicate libraryPackage = isLibrary <$> getPackage + +-- | Either @-flagName@ or @flagName@, depending upon a predicate. +-- For use in @Cabal Flags@ argument lists. +cabalFlag :: ToPredicate p Context Builder => p -> String -> Args +cabalFlag pred flagName = do + ifM (toPredicate pred) (arg flagName) (arg $ "-"<>flagName) + +infixr 3 `cabalFlag` |