diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,11 @@
+# Revision history for jailbreak-cabal
+
+## 1.4
+
+* jailbreak-cabal will now also relax version constraints on `build-tool-depends`.
+  See [#20](https://github.com/NixOS/jailbreak-cabal/pull/20).
+
+* Introduced new (automatic) cabal flag `Cabal-syntax` which should prevent
+  Cabal's constraint solver from picking incompatible versions of `Cabal` and
+  `Cabal-syntax` when using `cabal-install` to build jailbreak-cabal.
+  See [#22](https://github.com/NixOS/jailbreak-cabal/pull/22).
diff --git a/Main.hs b/Main.hs
--- a/Main.hs
+++ b/Main.hs
@@ -8,6 +8,7 @@
 import Distribution.PackageDescription
 import Distribution.PackageDescription.Parsec
 import Distribution.PackageDescription.PrettyPrint
+import Distribution.Types.ExeDependency
 import Distribution.Types.LegacyExeDependency
 import Distribution.Verbosity
 import Distribution.Version
@@ -48,6 +49,7 @@
 
 relaxBuildInfo :: BuildInfo -> BuildInfo
 relaxBuildInfo bi = bi { buildTools = map relax (buildTools bi)
+                       , buildToolDepends = map relax (buildToolDepends bi)
                        , targetBuildDepends = map relax (targetBuildDepends bi)
                        }
 
@@ -56,6 +58,9 @@
 
 instance DependencyType Dependency where
   relax (Dependency d _ deps) = Dependency d anyVersion deps
+
+instance DependencyType ExeDependency where
+  relax (ExeDependency d u _) = ExeDependency d u anyVersion
 
 instance DependencyType LegacyExeDependency where
   relax (LegacyExeDependency d _) = LegacyExeDependency d anyVersion
diff --git a/jailbreak-cabal.cabal b/jailbreak-cabal.cabal
--- a/jailbreak-cabal.cabal
+++ b/jailbreak-cabal.cabal
@@ -1,5 +1,5 @@
 name:                   jailbreak-cabal
-version:                1.3.6
+version:                1.4
 synopsis:               Strip version restrictions from Cabal files
 description:            Strip version restrictions from build dependencies in Cabal files.
 category:               Distribution
@@ -12,15 +12,26 @@
 license-file:           LICENSE
 build-type:             Simple
 cabal-version:          >= 1.10
-tested-with:            GHC == 7.6.3, GHC == 7.8.4, GHC == 7.10.3, GHC == 8.0.2,
-                        GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.1
+extra-source-files:     CHANGELOG.md
 
+flag Cabal-syntax
+  description: Use the new Cabal-syntax package
+  default: True
+  manual: False
+
 source-repository head
   type: git
   location: https://github.com/NixOS/jailbreak-cabal
 
 executable jailbreak-cabal
   main-is: Main.hs
-  -- for Cabal < 3.7, the Cabal-syntax dummy package will be used
-  build-depends: base < 5, Cabal == 3.*, Cabal-syntax
+  build-depends: base < 5
+
+  -- This stunt is necessary to prevent the constraint solver from picking
+  -- Cabal-syntax >= 3.7 and Cabal < 3.7 at the same time.
+  if flag(Cabal-syntax)
+    build-depends: Cabal >= 3.7, Cabal-syntax >= 3.7
+  else
+    build-depends: Cabal >= 3 && < 3.7, Cabal-syntax < 3.7
+
   default-language: Haskell2010
