diff --git a/shake-ext.cabal b/shake-ext.cabal
--- a/shake-ext.cabal
+++ b/shake-ext.cabal
@@ -1,5 +1,5 @@
 name:                shake-ext
-version:             0.4.1.0
+version:             0.4.2.0
 synopsis:            Helper functions for linting with shake 
 description:         This package provides several linters out of the box, as well as functionality for building ATS source files with [shake](http://shakebuild.com/).
 homepage:            https://hub.darcs.net/vmchale/shake-ext
diff --git a/src/Development/Shake/ATS.hs b/src/Development/Shake/ATS.hs
--- a/src/Development/Shake/ATS.hs
+++ b/src/Development/Shake/ATS.hs
@@ -29,14 +29,18 @@
         patsc = "patsopt" -- home ++ "/bin/patsopt"
     command atsArgs patsc ["--output", out, "-dd", sourceFile, "-cc"]
 
-atsBin :: [String] -> String -> String -> Rules ()
-atsBin libs sourceFile out =
+gcFlag :: Bool -> String
+gcFlag False = "-DATS_MEMALLOC_LIBC"
+gcFlag True  = "-DATS_MEMALLOC_GCBDW"
+
+atsBin :: Bool -> [String] -> String -> String -> Rules ()
+atsBin gc libs sourceFile out =
     out %> \_ -> do
         need [sourceFile]
         let home = "/usr/local/lib/ats2-postiats-0.3.8"
         cmd_ ["mkdir", "-p", dropDirectory1 out]
         let toLibs = fmap ("-l" <>)
-        command [EchoStderr False, AddEnv "PATSHOME" home] "patscc" ([sourceFile, "-atsccomp", "gcc -flto -I/usr/local/lib/ats2-postiats-0.3.8/ccomp/runtime/ -I/usr/local/lib/ats2-postiats-0.3.8/", "-DATS_MEMALLOC_LIBC", "-o", out, "-cleanaft", "-O2", "-mtune=native"] <> toLibs libs)
+        command [EchoStderr False, AddEnv "PATSHOME" home] "patscc" ([sourceFile, "-atsccomp", "gcc -flto -I/usr/local/lib/ats2-postiats-0.3.8/ccomp/runtime/ -I/usr/local/lib/ats2-postiats-0.3.8/", gcFlag gc, "-o", out, "-cleanaft", "-O2", "-mtune=native"] <> toLibs libs)
 
 cleanATS :: Rules ()
 cleanATS =
