diff --git a/cabal-debian.cabal b/cabal-debian.cabal
--- a/cabal-debian.cabal
+++ b/cabal-debian.cabal
@@ -1,5 +1,5 @@
 Name:           cabal-debian
-Version:        4.17.3
+Version:        4.17.4
 License:        BSD3
 License-File:   debian/copyright
 Author:         David Fox <dsf@seereason.com>
@@ -182,7 +182,7 @@
  if flag(ghcjs-support)
    Build-Depends: Cabal >= 1.21
  else
-   Build-Depends: Cabal >= 1.9
+   Build-Depends: Cabal >= 1.9 && < 1.21
  Exposed-Modules:
    Data.Algorithm.Diff.Context
    Data.Algorithm.Diff.Pretty
diff --git a/changelog b/changelog
--- a/changelog
+++ b/changelog
@@ -1,3 +1,11 @@
+haskell-cabal-debian (4.17.4) unstable; urgency=low
+
+  * Add missing ifdefs to hide the GHCJS constructor when ghcjs-support
+    flag is False.
+  * Require Cabal < 1.21 when ghcjs-support flag is False.
+
+ -- David Fox <dsf@seereason.com>  Tue, 02 Sep 2014 09:06:20 -0700
+
 haskell-cabal-debian (4.17.3) unstable; urgency=low
 
   * Moved source repository to github.com.
diff --git a/src/Debian/Debianize/BuildDependencies.hs b/src/Debian/Debianize/BuildDependencies.hs
--- a/src/Debian/Debianize/BuildDependencies.hs
+++ b/src/Debian/Debianize/BuildDependencies.hs
@@ -110,7 +110,9 @@
              mapM (buildDependencies hcTypePairs) (List.filter (not . selfDependency (Cabal.package pkgDesc)) deps) >>= return . concat
       hcPackageTypes :: CompilerFlavor -> Set B.PackageType
       hcPackageTypes GHC = fromList [B.Development, B.Profiling]
+#if MIN_VERSION_Cabal(1,21,0)
       hcPackageTypes GHCJS = fromList [B.Development]
+#endif
       hcPackageTypes hc = error $ "Unsupported compiler flavor: " ++ show hc
 
 
@@ -122,7 +124,9 @@
        cDeps <- cabalDeps
        let xs = nub $ if doc
                       then (if member GHC hcs then [anyrel "ghc-doc"] else []) ++
+#if MIN_VERSION_Cabal(1,21,0)
                            (if member GHCJS hcs then [anyrel "ghcjs"] else []) ++
+#endif
                            bDeps ++ concat cDeps
                       else []
        filterMissing xs
@@ -312,10 +316,12 @@
       compilerPackageName GHC B.Profiling = D.BinPkgName "ghc-prof"
       compilerPackageName GHC B.Development = D.BinPkgName "ghc"
       compilerPackageName GHC _ = D.BinPkgName "ghc" -- whatevs
+#if MIN_VERSION_Cabal(1,21,0)
       compilerPackageName GHCJS B.Documentation = D.BinPkgName "ghcjs"
       compilerPackageName GHCJS B.Profiling = error "Profiling not supported for GHCJS"
       compilerPackageName GHCJS B.Development = D.BinPkgName "ghcjs"
       compilerPackageName GHCJS _ = D.BinPkgName "ghcjs" -- whatevs
+#endif
       compilerPackageName x _ = error $ "Unsupported compiler flavor: " ++ show x
 
       -- FIXME: we are assuming here that ghc conflicts with all the
diff --git a/src/Debian/Debianize/Finalize.hs b/src/Debian/Debianize/Finalize.hs
--- a/src/Debian/Debianize/Finalize.hs
+++ b/src/Debian/Debianize/Finalize.hs
@@ -1,5 +1,5 @@
 -- | Compute the debianization of a cabal package.
-{-# LANGUAGE OverloadedStrings, ScopedTypeVariables #-}
+{-# LANGUAGE CPP, OverloadedStrings, ScopedTypeVariables #-}
 module Debian.Debianize.Finalize
     ( debianization
     , finalizeDebianization' -- external use deprecated - used in test script
@@ -42,7 +42,10 @@
 import Debian.Release (parseReleaseName)
 import Debian.Time (getCurrentLocalRFC822Time)
 import Debian.Version (buildDebianVersion, DebianVersion, parseDebianVersion)
-import Distribution.Compiler (CompilerFlavor(GHC, GHCJS))
+import Distribution.Compiler (CompilerFlavor(GHC))
+#if MIN_VERSION_Cabal(1,21,0)
+import Distribution.Compiler (CompilerFlavor(GHCJS))
+#endif
 import Distribution.Package (Dependency(..), PackageIdentifier(..), PackageName(PackageName))
 import Distribution.PackageDescription (PackageDescription)
 import Distribution.PackageDescription as Cabal (allBuildInfo, BuildInfo(buildable, extraLibs), Executable(buildInfo, exeName))
@@ -364,7 +367,9 @@
     do hcs <- access A.compilerFlavors >>= return . Set.toList
        builddir <- access T.buildDir >>= return . fromEmpty (case hcs of
                                                                [GHC] -> singleton "dist-ghc/build"
+#if MIN_VERSION_Cabal(1,21,0)
                                                                [GHCJS] -> singleton "dist-ghcjs/build"
+#endif
                                                                _ -> error $ "Unexpected compiler: " ++ show hcs)
        dDir <- access T.packageDescription >>= maybe (error "expandAtoms") (return . dataDir)
        expandApacheSites
@@ -397,12 +402,14 @@
             doAtom [GHC] (A.InstallCabalExec b name dest) = T.install b (builddir </> name </> name) dest
             -- A GHCJS executable is a directory with files, copy them
             -- all into place.
+#if MIN_VERSION_Cabal(1,21,0)
             doAtom [GHCJS] (A.InstallCabalExec b name dest) =
                 T.rulesFragments +=
                      (Text.unlines
                         [ pack ("binary-fixup" </> show (pretty b)) <> "::"
                         , pack ("\t(cd " <> builddir </> name <> " && find " <> name <.> "jsexe" <> " -type f) |\\\n" <>
                                        "\t  while read i; do install -Dp " <> builddir </> name </> "$$i debian" </> show (pretty b) </> makeRelative "/" dest </> "$$i; done") ])
+#endif
             doAtom _ _ = return ()
 
       -- Turn A.InstallCabalExecTo into a make rule
diff --git a/src/Debian/Debianize/Options.hs b/src/Debian/Debianize/Options.hs
--- a/src/Debian/Debianize/Options.hs
+++ b/src/Debian/Debianize/Options.hs
@@ -1,3 +1,4 @@
+{-# LANGUAGE CPP #-}
 module Debian.Debianize.Options
     ( options
     , compileArgs
@@ -183,8 +184,10 @@
                       , "set to /, but it must be set."]),
       Option "" ["ghc"] (NoArg (compilerFlavors %= (insert GHC))) "Generate packages for GHC - same as --with-compiler GHC",
       Option "" ["no-ghc"] (NoArg (compilerFlavors %= (delete GHC))) "Do not generate packages for GHC - same as --without-compiler GHC",
+#if MIN_VERSION_Cabal(1,21,0)
       Option "" ["ghcjs"] (NoArg (compilerFlavors %= (insert GHCJS))) "Generate packages for GHCJS - same as --with-compiler GHCJS",
       Option "" ["no-ghcjs"] (NoArg (compilerFlavors %= (delete GHCJS))) "Do not generate packages for GHCJS - same as --without-compiler GHCJS",
+#endif
       Option "" ["hugs"] (NoArg (compilerFlavors %= (insert Hugs))) "Generate packages for Hugs - same as --with-compiler GHC",
       Option "" ["no-hugs"] (NoArg (compilerFlavors %= (delete Hugs))) "Do not generate packages for Hugs - same as --without-compiler Hugs",
       Option "" ["with-compiler"] (ReqArg (\ s -> maybe (error $ "Invalid compiler id: " ++ show s)
