diff --git a/shake-ats.cabal b/shake-ats.cabal
--- a/shake-ats.cabal
+++ b/shake-ats.cabal
@@ -1,5 +1,5 @@
 name:                shake-ats
-version:             1.5.0.4
+version:             1.5.0.5
 synopsis:            Utilities for building ATS projects with shake
 description:         Various helper functions for building [ATS](http://www.ats-lang.org/) with the [shake](http://shakebuild.com/) library
 homepage:            https://github.com/vmchale/shake-ats#readme
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
@@ -150,9 +150,9 @@
     [] -> pure undefined
     _  -> ghcVersion
 
-doStatic :: ArtifactType -> Rules () -> Rules ()
-doStatic StaticLibrary = id
-doStatic _             = const (pure ())
+doLib :: ArtifactType -> Rules () -> Rules ()
+doLib Executable = pure (pure ())
+doLib _          = id
 
 atsBin :: BinaryTarget -> Rules ()
 atsBin tgt@BinaryTarget{..} = do
@@ -170,15 +170,17 @@
 
     let h Executable    = id
         h StaticLibrary = fmap (-<.> "o")
+        h SharedLibrary = fmap (-<.> "o")
         g Executable    = ccAction
         g StaticLibrary = staticLibA
+        g SharedLibrary = sharedLibA
         h' = h tgtType
 
     cconfig' <- cconfig toolConfig libs gc (makeCFlags cFlags mempty (pure undefined) gc)
 
     zipWithM_ (atsCGen toolConfig tgt) src cTargets
 
-    doStatic tgtType (zipWithM_ (objectFileR (cc toolConfig) cconfig') cTargets (h' cTargets))
+    doLib tgtType (zipWithM_ (objectFileR (cc toolConfig) cconfig') cTargets (h' cTargets))
 
     binTarget %> \_ -> do
 
diff --git a/src/Development/Shake/ATS/Type.hs b/src/Development/Shake/ATS/Type.hs
--- a/src/Development/Shake/ATS/Type.hs
+++ b/src/Development/Shake/ATS/Type.hs
@@ -48,6 +48,7 @@
 
 data ArtifactType = StaticLibrary
                   | Executable
+                  | SharedLibrary
                   deriving (Generic, Binary)
 
 -- | Information about where to find @patscc@ and @patsopt@.
