diff --git a/ats-pkg.cabal b/ats-pkg.cabal
--- a/ats-pkg.cabal
+++ b/ats-pkg.cabal
@@ -1,5 +1,5 @@
 name:                ats-pkg
-version:             2.1.0.10
+version:             2.2.0.0
 synopsis:            Package manager for ATS
 description:         A collection of scripts to make building ATS projects easy.
 homepage:            https://github.com/vmchale/atspkg#readme
@@ -51,8 +51,8 @@
                      , unix
                      , lens
                      , dhall
-                     , shake-ats >= 1.2.0.0
-                     , shake-ext >= 2.0.0.0
+                     , shake-ats >= 1.3.0.0
+                     , shake-ext >= 2.3.0.0
                      , composition-prelude >= 1.1.0.2
                      , optparse-applicative
                      , temporary
diff --git a/src/Language/ATS/Package/Build.hs b/src/Language/ATS/Package/Build.hs
--- a/src/Language/ATS/Package/Build.hs
+++ b/src/Language/ATS/Package/Build.hs
@@ -191,30 +191,19 @@
         let bins = TL.unpack . target <$> bs
         setTargets rs bins mt
 
-        cDeps >> bits
+        cDepsRules >> bits
 
         mapM_ g (bs ++ ts)
 
-    where g (Bin s t ls hs' atg gc') =
+    where g (Bin s t ls hs' atg gc' cSrc) =
             atsBin
-                (BinaryTarget
-                    cc'
-                    (TL.unpack <$> cf)
-                    v
-                    v'
-                    gc'
-                    (TL.unpack <$> ls)
-                    (TL.unpack s)
-                    hs'
-                    (both TL.unpack . asTuple <$> atg)
-                    (TL.unpack t)
-                )
+                (BinaryTarget cc' (TL.unpack <$> cf) (ATSToolConfig v v') gc' (TL.unpack <$> ls) (TL.unpack s) hs' (both TL.unpack . asTuple <$> atg) (TL.unpack t) (TL.unpack <$> cSrc))
 
-          cDeps = unless (null as) $ do
+          cDepsRules = unless (null as) $ do
             let cedar = TL.unpack cdir
                 atsSourceDirs = nub (takeDirectory . TL.unpack <$> as)
                 targets = fmap (((cedar <> "/") <>) . (-<.> "c") . takeBaseName . TL.unpack) as
             want targets
-            mapM_ (cgen v v') atsSourceDirs
+            mapM_ (cgen $ ATSToolConfig v v') atsSourceDirs
 
           cc' = maybe (TL.unpack ccLocal) (<> "-gcc") tgt
diff --git a/src/Language/ATS/Package/Type.hs b/src/Language/ATS/Package/Type.hs
--- a/src/Language/ATS/Package/Type.hs
+++ b/src/Language/ATS/Package/Type.hs
@@ -57,12 +57,13 @@
 deriving instance Interpret ForeignCabal
 deriving instance Binary ForeignCabal
 
-data Bin = Bin { src    :: Text -- ^ Source file (should end with @.dats@)
-               , target :: Text -- ^ Binary to be built
-               , libs   :: [Text] -- ^ Libraries to link against (e.g. @[ "pthread" ]@)
-               , hsDeps :: [ForeignCabal] -- ^ Haskell @.cabal@ files associated with the final library we want to make
-               , hs2ats :: [TargetPair] -- ^ List of sources and targets for @hs2ats@
-               , gcBin  :: Bool -- ^ Whether to use the garbage collector
+data Bin = Bin { src      :: Text -- ^ Source file (should end with @.dats@)
+               , target   :: Text -- ^ Binary to be built
+               , libs     :: [Text] -- ^ Libraries to link against (e.g. @[ "pthread" ]@)
+               , hsDeps   :: [ForeignCabal] -- ^ Haskell @.cabal@ files associated with the final library we want to make
+               , hs2ats   :: [TargetPair] -- ^ List of sources and targets for @hs2ats@
+               , gcBin    :: Bool -- ^ Whether to use the garbage collector
+               , cSources :: [Text] -- ^ C source files the build depends on
                }
          deriving (Show, Eq, Generic, Interpret, Binary)
 
