diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # shake-cabal
 
+## 0.2.0.0
+
+  * More precise `HsCompiler` type
+
 ## 0.1.0.5
 
   * Slightly better behavior for `getCabalDepsA` and `getCabalDepsV`
diff --git a/shake-cabal.cabal b/shake-cabal.cabal
--- a/shake-cabal.cabal
+++ b/shake-cabal.cabal
@@ -1,6 +1,6 @@
 cabal-version: 1.18
 name: shake-cabal
-version: 0.1.0.5
+version: 0.2.0.0
 license: BSD3
 license-file: LICENSE
 copyright: Copyright: (c) 2018 Vanessa McHale
diff --git a/src/Development/Shake/Cabal.hs b/src/Development/Shake/Cabal.hs
--- a/src/Development/Shake/Cabal.hs
+++ b/src/Development/Shake/Cabal.hs
@@ -32,16 +32,19 @@
 import           System.FilePath                        (pathSeparator)
 import           System.Info                            (arch, os)
 
-data HsCompiler = GHC { _suff :: Maybe String -- ^ Compiler version
+data HsCompiler = GHC { _pref :: Maybe String -- ^ Target architecture
+                      , _suff :: Maybe String -- ^ Compiler version
                       }
                 | GHCJS { _suff :: Maybe String -- ^ Compiler version
                         }
 
 hsCompiler :: HsCompiler -> String
-hsCompiler (GHC Nothing)    = "ghc"
-hsCompiler (GHC (Just v))   = "ghc-" ++ v
-hsCompiler (GHCJS Nothing)  = "ghcjs"
-hsCompiler (GHCJS (Just v)) = "ghcjs-" ++ v
+hsCompiler (GHC Nothing Nothing)       = "ghc"
+hsCompiler (GHC Nothing (Just v))      = "ghc-" ++ v
+hsCompiler (GHC (Just arch') (Just v)) = arch' ++ "-ghc-" ++ v
+hsCompiler (GHC (Just arch') Nothing)  = arch' ++ "-ghc"
+hsCompiler (GHCJS Nothing)             = "ghcjs"
+hsCompiler (GHCJS (Just v))            = "ghcjs-" ++ v
 
 -- | E.g. @x86_64-linux@
 platform :: String
