diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog for shake-language-c
 
+## v0.9.0
+
+* Add support for the Android *arm64-v8a* target architecture and drop support for specifying the toolchain version; this API breaking change requires a minimum Android NDK revision 11c
+
 ## v0.8.6
 
 * Fix Windows host target
diff --git a/shake-language-c.cabal b/shake-language-c.cabal
--- a/shake-language-c.cabal
+++ b/shake-language-c.cabal
@@ -13,14 +13,14 @@
 -- limitations under the License.
 
 Name:         shake-language-c
-Version:      0.8.6
+Version:      0.9.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
 License:      Apache-2.0
 License-File: LICENSE
 
-Copyright:    Copyright (c) 2012-2014 Samplecount S.L.
+Copyright:    Copyright (c) 2012-2016 Samplecount S.L.
 Homepage:     https://github.com/samplecount/shake-language-c
 Bug-Reports:  https://github.com/samplecount/shake-language-c/issues
 Maintainer:   stefan@samplecount.com
diff --git a/src/Development/Shake/Language/C/Host/Windows.hs b/src/Development/Shake/Language/C/Host/Windows.hs
--- a/src/Development/Shake/Language/C/Host/Windows.hs
+++ b/src/Development/Shake/Language/C/Host/Windows.hs
@@ -1,4 +1,4 @@
--- Copyright 2012-2014 Samplecount S.L.
+-- Copyright 2012-2016 Samplecount S.L.
 --
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.
diff --git a/src/Development/Shake/Language/C/Target/Android.hs b/src/Development/Shake/Language/C/Target/Android.hs
--- a/src/Development/Shake/Language/C/Target/Android.hs
+++ b/src/Development/Shake/Language/C/Target/Android.hs
@@ -1,4 +1,4 @@
--- Copyright 2012-2013 Samplecount S.L.
+-- Copyright 2012-2016 Samplecount S.L.
 --
 -- Licensed under the Apache License, Version 2.0 (the "License");
 -- you may not use this file except in compliance with the License.
@@ -18,6 +18,8 @@
 This module provides toolchain definitions and utilities for targeting Android.
 See "Development.Shake.Language.C.Rules" for examples of how to use a target
 toolchain.
+
+The minimum required Android NDK revision is 11c.
 -}
 module Development.Shake.Language.C.Target.Android (
     target
@@ -45,6 +47,7 @@
 toolChainPrefix x =
     case targetArch x of
         X86 _ -> "x86-"
+        Arm Arm64 -> "aarch64-linux-android-"
         Arm _ -> "arm-linux-androideabi-"
         arch  -> unsupportedArch arch
 
@@ -85,9 +88,10 @@
               </> "platforms"
               </> "android-" ++ show (head (versionBranch version))
               </> "arch-" ++ case arch of
-                              (X86 _) -> "x86"
-                              (Arm _) -> "arm"
-                              _       -> unsupportedArch arch
+                              (X86 _)     -> "x86"
+                              (Arm Arm64) -> "arm64"
+                              (Arm _)     -> "arm"
+                              _           -> unsupportedArch arch
     march = "-march=" ++ case arch of
                           X86 I386   -> "i386"
                           X86 I686   -> "i686"
@@ -95,8 +99,10 @@
                           Arm Armv5  -> "armv5te"
                           Arm Armv6  -> "armv5te"
                           Arm Armv7  -> "armv7-a"
+                          Arm Arm64  -> "armv8-a"
                           _ -> unsupportedArch arch
-    archCompilerFlags (Arm Armv7) = [(Nothing, ["-mfloat-abi=softfp", "-mfpu=neon" {- vfpv3-d16 -}])]
+    archCompilerFlags (Arm Armv7) = [(Nothing, ["-mfloat-abi=softfp", "-mfpu=neon"])]
+    archCompilerFlags (Arm Arm64) = []
     archCompilerFlags (Arm _)     = [(Nothing, ["-mtune=xscale", "-msoft-float"])]
     archCompilerFlags _           = []
     archLinkerFlags (Arm Armv7)   = ["-Wl,--fix-cortex-a8"]
@@ -108,42 +114,42 @@
 sdkVersion :: Int -> Version
 sdkVersion n = Version [n] []
 
-gccToolChain :: FilePath -> Target -> Version -> FilePath
-gccToolChain ndk target version =
+gccToolChain :: FilePath -> Target -> FilePath
+gccToolChain ndk target =
   ndk </> "toolchains"
-      </> toolChainPrefix target ++ showVersion version
+      </> toolChainPrefix target ++ showVersion (Version [4,9] [])
       </> "prebuilt"
       </> osPrefix
 
 -- | Construct an Android toolchain.
 toolChain :: FilePath                     -- ^ NDK source directory
           -> Version                      -- ^ SDK version, see `sdkVersion`
-          -> (ToolChainVariant, Version)  -- ^ Toolchain variant and version
+          -> ToolChainVariant             -- ^ Toolchain variant
           -> Target                       -- ^ Build target, see `target`
           -> ToolChain                    -- ^ Resulting toolchain
-toolChain "" _ (_, _) _ = error "Empty NDK directory"
-toolChain ndk version (GCC, tcVersion) t =
+toolChain "" _ _ _ = error "Empty NDK directory"
+toolChain ndk version GCC t =
     set variant GCC
-  $ set toolDirectory (Just (gccToolChain ndk t tcVersion </> "bin"))
+  $ set toolDirectory (Just (gccToolChain ndk t </> "bin"))
   $ set toolPrefix (toolPrefix_ t)
   $ set compilerCommand "gcc"
   $ set archiverCommand "ar"
   $ set linkerCommand "g++"
   $ set defaultBuildFlags (return $ mkDefaultBuildFlags ndk version (targetArch t))
   $ defaultToolChain
-toolChain ndk version (LLVM, tcVersion) t =
+toolChain ndk version LLVM t =
     set variant LLVM
   $ set toolDirectory (Just (ndk </> "toolchains"
-                                 </> "llvm-" ++ showVersion tcVersion
+                                 </> "llvm"
                                  </> "prebuilt"
                                  </> osPrefix
                                  </> "bin"))
   $ set compilerCommand "clang"
-  $ set archiverCommand "llvm-ar"
+  $ set archiverCommand (gccToolChain ndk t </> "bin" </> toolPrefix_ t ++ "ar")
   $ set linkerCommand "clang++"
   $ set defaultBuildFlags (return $
     let flags = [ "-target", llvmTarget t
-                , "-gcc-toolchain", gccToolChain ndk t (Version [4,8] []) ]
+                , "-gcc-toolchain", gccToolChain ndk t ]
     in  mkDefaultBuildFlags ndk version (targetArch t)
       . append compilerFlags [(Nothing, flags)]
       . append linkerFlags flags
@@ -154,18 +160,18 @@
       case targetArch x of
         Arm Armv5 -> "armv5te-none-linux-androideabi"
         Arm Armv7 -> "armv7-none-linux-androideabi"
+        Arm Arm64 -> "aarch64-none-linux-android"
         X86 I386  -> "i686-none-linux-android"
         arch      -> unsupportedArch arch
-toolChain _ _ (tcVariant, tcVersion) _ =
-  error $ "Unknown toolchain variant "
-        ++ show tcVariant ++ " "
-        ++ showVersion tcVersion
+toolChain _ _ tcVariant _ =
+  error $ "Unsupported toolchain variant " ++ show tcVariant
 
 -- | Valid Android ABI identifier for the given architecture.
 abiString :: Arch -> String
 abiString (Arm Armv5) = "armeabi"
 abiString (Arm Armv6) = "armeabi"
 abiString (Arm Armv7) = "armeabi-v7a"
+abiString (Arm Arm64) = "arm64-v8a"
 abiString (X86 _)     = "x86"
 abiString arch        = unsupportedArch arch
 
