diff --git a/c2hs/c/CAST.hs b/c2hs/c/CAST.hs
--- a/c2hs/c/CAST.hs
+++ b/c2hs/c/CAST.hs
@@ -1064,6 +1064,9 @@
     put_ bh (CFloat128Type at) = do
             putByte bh 14
             put_ bh at
+    put_ bh (CBoolType at) = do
+            putByte bh 15
+            put_ bh at
     get bh = do
             h <- getByte bh
             case h of
@@ -1117,6 +1120,9 @@
               14 -> do
                     at <- get bh
                     return (CFloat128Type at)
+              15 -> do
+                    at <- get bh
+                    return (CBoolType at)
 
 instance Binary CStorageSpec where
     put_ bh (CAuto aa) = do
diff --git a/gtk2hs-buildtools.cabal b/gtk2hs-buildtools.cabal
--- a/gtk2hs-buildtools.cabal
+++ b/gtk2hs-buildtools.cabal
@@ -1,5 +1,5 @@
 Name:   gtk2hs-buildtools
-Version:        0.13.5.1
+Version:        0.13.5.3
 License:        GPL-2
 License-file:   COPYING
 Copyright:      (c) 2001-2010 The Gtk2Hs Team
diff --git a/src/Gtk2HsSetup.hs b/src/Gtk2HsSetup.hs
--- a/src/Gtk2HsSetup.hs
+++ b/src/Gtk2HsSetup.hs
@@ -10,6 +10,8 @@
   c2hsLocal
   ) where
 
+import Data.Maybe (mapMaybe)
+import Distribution.Pretty (prettyShow)
 import Distribution.Simple
 import Distribution.Simple.PreProcess
 import Distribution.InstalledPackageInfo ( importDirs,
@@ -23,7 +25,7 @@
                                                BuildInfo(..),
                                                emptyBuildInfo, allBuildInfo,
                                                Library(..),
-                                               libModules, hasLibs)
+                                               explicitLibModules, hasLibs)
 import Distribution.Simple.LocalBuildInfo (LocalBuildInfo(withPackageDB, buildDir, localPkgDescr, installedPkgs, withPrograms),
                                            InstallDirs(..),
                                            ComponentLocalBuildInfo,
@@ -31,30 +33,33 @@
                                            absoluteInstallDirs,
                                            relocatable,
                                            compiler)
+import Distribution.Types.LocalBuildInfo as LBI (componentNameCLBIs)
+import qualified Distribution.Types.LocalBuildInfo as LBI
 import Distribution.Simple.Compiler  ( Compiler(..) )
 import Distribution.Simple.Program (
   Program(..), ConfiguredProgram(..),
-  rawSystemProgramConf, rawSystemProgramStdoutConf, programName, programPath,
+  runDbProgram, getDbProgramOutput, programName, programPath,
   c2hsProgram, pkgConfigProgram, gccProgram, requireProgram, ghcPkgProgram,
-  simpleProgram, lookupProgram, rawSystemProgramStdout, ProgArg)
+  simpleProgram, lookupProgram, getProgramOutput, ProgArg)
 #if MIN_VERSION_Cabal(2,0,0)
 import Distribution.Simple.Program.HcPkg ( defaultRegisterOptions )
 import Distribution.Types.PkgconfigDependency ( PkgconfigDependency(..) )
 import Distribution.Types.PkgconfigName
-import qualified Distribution.Types.LocalBuildInfo as LBI (componentsConfigs)  -- TODO will be removed in Cabal 2.2
 #endif
 import Distribution.ModuleName ( ModuleName, components, toFilePath )
-import Distribution.Simple.Utils
+import Distribution.Simple.Utils hiding (die)
 import Distribution.Simple.Setup (CopyFlags(..), InstallFlags(..), CopyDest(..),
                                   defaultCopyFlags, ConfigFlags(configVerbosity),
                                   fromFlag, toFlag, RegisterFlags(..), flagToMaybe,
                                   fromFlagOrDefault, defaultRegisterFlags)
-import Distribution.Simple.BuildPaths ( autogenModulesDir )
+#if MIN_VERSION_Cabal(2,0,0)
+import Distribution.Simple.BuildPaths ( autogenPackageModulesDir )
+#endif
 import Distribution.Simple.Install ( install )
 import Distribution.Simple.Register ( generateRegistrationInfo, registerPackage )
 import Distribution.Text ( simpleParse, display )
 import System.FilePath
-import System.Exit (exitFailure)
+import System.Exit (die, exitFailure)
 import System.Directory ( doesFileExist, getDirectoryContents, doesDirectoryExist )
 import Distribution.Version (Version(..))
 import Distribution.Verbosity
@@ -70,6 +75,7 @@
 import qualified Distribution.InstalledPackageInfo as IPI
        (installedUnitId)
 import Distribution.Simple.Compiler (compilerVersion)
+import qualified Distribution.Compat.Graph as Graph
 
 import Control.Applicative ((<$>))
 
@@ -86,7 +92,17 @@
 
 onDefaultSearchPath f a b = f a b defaultProgramSearchPath
 #if MIN_VERSION_Cabal(2,5,0)
-libraryConfig lbi = case [clbi | (LBI.CLibName _, clbi, _) <- LBI.componentsConfigs lbi] of
+componentsConfigs :: LocalBuildInfo -> [(LBI.ComponentName, ComponentLocalBuildInfo, [LBI.ComponentName])]
+componentsConfigs lbi =
+    [ (LBI.componentLocalName clbi,
+       clbi,
+       mapMaybe (fmap LBI.componentLocalName . flip Graph.lookup g)
+                (LBI.componentInternalDeps clbi))
+    | clbi <- Graph.toList g ]
+  where
+    g = LBI.componentGraph lbi
+
+libraryConfig lbi = case [clbi | (LBI.CLibName _, clbi, _) <- componentsConfigs lbi] of
 #else
 libraryConfig lbi = case [clbi | (LBI.CLibName, clbi, _) <- LBI.componentsConfigs lbi] of
 #endif
@@ -176,12 +192,24 @@
            "Package contains no library to register:" (packageId pkg_descr)
   where verbosity = fromFlag (regVerbosity flags)
 
+getComponentLocalBuildInfo :: LocalBuildInfo -> LBI.ComponentName -> ComponentLocalBuildInfo
+getComponentLocalBuildInfo lbi cname =
+    case LBI.componentNameCLBIs lbi cname of
+      [clbi] -> clbi
+      [] ->
+          error $ "internal error: there is no configuration data "
+               ++ "for component " ++ show cname
+      clbis ->
+          error $ "internal error: the component name " ++ show cname
+               ++ "is ambiguous.  Refers to: "
+               ++ intercalate ", " (map (prettyShow . LBI.componentUnitId) clbis)
+
 register :: PackageDescription -> LocalBuildInfo
          -> RegisterFlags -- ^Install in the user's database?; verbose
          -> IO ()
 register pkg@PackageDescription { library       = Just lib  } lbi regFlags
   = do
-    let clbi = LBI.getComponentLocalBuildInfo lbi
+    let clbi = getComponentLocalBuildInfo lbi
 #if MIN_VERSION_Cabal(2,5,0)
                    (LBI.CLibName $ PD.libName lib)
 #else
@@ -239,12 +267,17 @@
 -- This is a hack for Cabal-1.8, It is not needed in Cabal-1.9.1 or later
 ------------------------------------------------------------------------------
 
+#if MIN_VERSION_Cabal(2,0,0)
 adjustLocalBuildInfo :: LocalBuildInfo -> LocalBuildInfo
+adjustLocalBuildInfo = id
+#else
+adjustLocalBuildInfo :: LocalBuildInfo -> LocalBuildInfo
 adjustLocalBuildInfo lbi =
   let extra = (Just libBi, [])
-      libBi = emptyBuildInfo { includeDirs = [ autogenModulesDir lbi
+      libBi = emptyBuildInfo { includeDirs = [ autogenPackageModulesDir lbi
                                              , buildDir lbi ] }
    in lbi { localPkgDescr = updatePackageDescription extra (localPkgDescr lbi) }
+#endif
 
 ------------------------------------------------------------------------------
 -- Processing .chs files with our local c2hs.
@@ -306,7 +339,7 @@
   -- cannot use the recommended 'findModuleFiles' since it fails if there exists
   -- a modules that does not have a .chi file
   mFiles <- mapM (findFileWithExtension' ["chi"] [buildDir lbi] . toFilePath)
-                   (PD.libModules lib)
+                   (PD.explicitLibModules lib)
 
   let files = [ f | Just f <- mFiles ]
   installOrdinaryFiles verbosity libPref files
@@ -352,7 +385,7 @@
       genFile :: ([String] -> IO String) -> [ProgArg] -> FilePath -> IO ()
       genFile prog args outFile = do
          res <- prog args
-         rewriteFile outFile res
+         rewriteFileEx verb outFile res
 
   forM_ (filter (\(tag,_) -> "x-types-" `isPrefixOf` tag && "file" `isSuffixOf` tag) xList) $
     \(fileTag, f) -> do
@@ -408,7 +441,7 @@
 #endif
     <- concatMap pkgconfigDepends (allBuildInfo pkg) ]
   where
-    pkgconfig = rawSystemProgramStdoutConf verbosity
+    pkgconfig = getDbProgramOutput verbosity
                   pkgConfigProgram (withPrograms lbi)
 
 ------------------------------------------------------------------------------
