diff --git a/Cabal/Distribution/PackageDescription/Parse.hs b/Cabal/Distribution/PackageDescription/Parse.hs
index 8a62f09af44d48378511d1e3edb30ef11b4d4a93..ed279656680d2ae69c3e59d8140fdcb9f0911d76 100644
--- a/Cabal/Distribution/PackageDescription/Parse.hs
+++ b/Cabal/Distribution/PackageDescription/Parse.hs
@@ -418,6 +418,9 @@ binfoFieldDescrs =
  , commaListField  "build-tools"
            disp               parse
            buildTools         (\xs  binfo -> binfo{buildTools=xs})
+ , commaListField  "build-tool-depends"
+           disp               parse
+           toolDepends        (\xs  binfo -> binfo{toolDepends=xs})
  , commaListFieldWithSep vcat "build-depends"
            disp                   parse
            targetBuildDepends (\xs binfo -> binfo{targetBuildDepends=xs})
diff --git a/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs b/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs
index f6a4b3aa9eb8661d5296419f1c4afe13b9ff0bae..de6a86bfcae044e5c545409454f983c49335e5e7 100644
--- a/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs
+++ b/Cabal/Distribution/PackageDescription/Parsec/FieldDescr.hs
@@ -423,6 +423,9 @@ binfoFieldDescrs =
  , commaListField  "build-tools"
            disp               parsec
            buildTools         (\xs  binfo -> binfo{buildTools=xs})
+ , commaListField  "build-tool-depends"
+           disp               parsec
+           toolDepends        (\xs  binfo -> binfo{toolDepends=xs})
  , commaListFieldWithSep vcat "build-depends"
        disp               parsec
        targetBuildDepends (\xs binfo -> binfo{targetBuildDepends=xs})
diff --git a/Cabal/Distribution/Types/BuildInfo.hs b/Cabal/Distribution/Types/BuildInfo.hs
index f1528801bc70e803b699aab7c37176681726cdf6..8e30ca061935a1efc3c26ff6a0be3724bcfc5322 100644
--- a/Cabal/Distribution/Types/BuildInfo.hs
+++ b/Cabal/Distribution/Types/BuildInfo.hs
@@ -19,6 +19,7 @@ import Distribution.Compat.Prelude
 
 import Distribution.Types.Mixin
 import Distribution.Types.Dependency
+import Distribution.Types.ExeDependency
 import Distribution.Types.LegacyExeDependency
 import Distribution.Types.PkgconfigDependency
 
@@ -30,6 +31,7 @@ import Language.Haskell.Extension
 data BuildInfo = BuildInfo {
         buildable         :: Bool,      -- ^ component is buildable here
         buildTools        :: [LegacyExeDependency], -- ^ tools needed to build this bit
+        toolDepends       :: [ExeDependency], -- ^ haskell tools needed to build this bit
         cppOptions        :: [String],  -- ^ options for pre-processing Haskell code
         ccOptions         :: [String],  -- ^ options for C compiler
         ldOptions         :: [String],  -- ^ options for linker
@@ -71,6 +73,7 @@ instance Monoid BuildInfo where
   mempty = BuildInfo {
     buildable           = True,
     buildTools          = [],
+    toolDepends         = [],
     cppOptions          = [],
     ccOptions           = [],
     ldOptions           = [],
@@ -106,6 +109,7 @@ instance Semigroup BuildInfo where
   a <> b = BuildInfo {
     buildable           = buildable a && buildable b,
     buildTools          = combine    buildTools,
+    toolDepends         = combine    toolDepends,
     cppOptions          = combine    cppOptions,
     ccOptions           = combine    ccOptions,
     ldOptions           = combine    ldOptions,