diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
 # Changelog for shake-language-c
 
+## [v0.7.0][]
+
+* Add `arm64` ARM version
+* Add support for `arm64` to OSX toolchains
+* Fix compilation error with GHC 7.10 (#25)
+
 ## [v0.6.4][]
 
 * Fix Android toolchain definition for `x86` architecture
diff --git a/shake-language-c.cabal b/shake-language-c.cabal
--- a/shake-language-c.cabal
+++ b/shake-language-c.cabal
@@ -13,7 +13,7 @@
 -- limitations under the License.
 
 Name:         shake-language-c
-Version:      0.6.4
+Version:      0.7.0
 Synopsis:     Utilities for cross-compiling with Shake
 Description:  This library provides <http://hackage.haskell.org/package/shake Shake> utilities for cross-compiling @C@, @C++@ and @ObjC@ code for various target platforms. Currently supported target platforms are Android, iOS, Linux, MacOS X, Windows\/MinGW and Google Portable Native Client (PNaCl). Supported host platforms are MacOS X, Linux and Windows.
 Category:     Development
@@ -61,7 +61,7 @@
     , data-default-class
     , fclabels >= 2
     , process
-    , shake >= 0.10
+    , shake >= 0.14
     , split
     , unordered-containers
 
diff --git a/src/Development/Shake/Language/C/Host/OSX.hs b/src/Development/Shake/Language/C/Host/OSX.hs
--- a/src/Development/Shake/Language/C/Host/OSX.hs
+++ b/src/Development/Shake/Language/C/Host/OSX.hs
@@ -16,7 +16,7 @@
   getHostToolChain
 ) where
 
-import Control.Applicative hiding ((*>))
+import Control.Applicative
 import Development.Shake
 import Development.Shake.Language.C.Target
 import Development.Shake.Language.C.Target.OSX
diff --git a/src/Development/Shake/Language/C/Rules.hs b/src/Development/Shake/Language/C/Rules.hs
--- a/src/Development/Shake/Language/C/Rules.hs
+++ b/src/Development/Shake/Language/C/Rules.hs
@@ -91,7 +91,7 @@
     f1 <- get ToolChain.defaultBuildFlags tc
     f2 <- getBuildFlags
     return $ f2 . f1 $ mempty
-  result *> \_ -> do
+  result %> \_ -> do
     tc <- cachedToolChain ()
     flags <- cachedBuildFlags ()
     objs <- cachedObjects ()
@@ -101,7 +101,7 @@
       flags
       objs
       result
-  (dropTrailingPathSeparator objectsDir ++ "//*.o") *> \obj -> do
+  (dropTrailingPathSeparator objectsDir ++ "//*.o") %> \obj -> do
     tc <- cachedToolChain ()
     flags <- cachedBuildFlags ()
     -- Compute source file name from object file name
diff --git a/src/Development/Shake/Language/C/Target.hs b/src/Development/Shake/Language/C/Target.hs
--- a/src/Development/Shake/Language/C/Target.hs
+++ b/src/Development/Shake/Language/C/Target.hs
@@ -59,6 +59,7 @@
   | Armv6
   | Armv7
   | Armv7s
+  | Arm64
   deriving (Eq, Show)
 
 -- | Target architecture.
@@ -91,6 +92,7 @@
 --
 -- The idea is that several such values can be combined to form more complex build directory hierarchies. This can be important for disambiguating build product paths in Shake rules.
 class ToBuildPrefix a where
+  -- | Convert a value to a (unique) build directory prefix.
   toBuildPrefix :: a -> FilePath
 
 instance ToBuildPrefix Platform where
@@ -99,14 +101,9 @@
 instance ToBuildPrefix Arch where
   toBuildPrefix arch =
     case arch of
-      X86 I386   -> "i386"
-      X86 I686   -> "i686"
-      X86 X86_64 -> "x86_64"
-      Arm Armv5  -> "armv5"
-      Arm Armv6  -> "armv6"
-      Arm Armv7  -> "armv7"
-      Arm Armv7s -> "armv7s"
-      LLVM_IR    -> "llvm_ir"
+      X86 version -> map toLower (show version)
+      Arm version -> map toLower (show version)
+      _           -> map toLower (show arch)
 
 instance ToBuildPrefix Target where
    toBuildPrefix target =
diff --git a/src/Development/Shake/Language/C/Target/OSX.hs b/src/Development/Shake/Language/C/Target/OSX.hs
--- a/src/Development/Shake/Language/C/Target/OSX.hs
+++ b/src/Development/Shake/Language/C/Target/OSX.hs
@@ -38,7 +38,7 @@
   , universalBinary
 ) where
 
-import           Control.Applicative hiding ((*>))
+import           Control.Applicative
 import           Data.List (stripPrefix)
 import           Data.List.Split (splitOn)
 import           Data.Maybe
@@ -62,6 +62,7 @@
     Arm Armv6  -> "armv6"
     Arm Armv7  -> "armv7"
     Arm Armv7s -> "armv7s"
+    Arm Arm64  -> "arm64"
     _          -> error $ "Unsupported OSX target architecture " ++ show arch
 
 archFlags :: Target -> [String]
