diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -13,10 +13,8 @@
 main = defaultMainWithHooks hk
  where
  hk = simpleUserHooks { buildHook = \pd lbi uh bf -> do
-                                        let ccProg = Program "gcc" undefined undefined undefined
-                                            hcProg = Program "ghc" undefined undefined undefined
-                                            mConf  = lookupProgram ccProg (withPrograms lbi)
-                                            hcConf = lookupProgram hcProg (withPrograms lbi)
+                                        let mConf  = lookupProgram gccProgram (withPrograms lbi)
+                                            hcConf = lookupProgram ghcProgram (withPrograms lbi)
                                             err = error "Could not determine C compiler"
                                             _cc  = locationPath . programLocation  . maybe err id $ mConf
                                             hc  = locationPath . programLocation  . maybe err id $ hcConf
diff --git a/cipher-aes128.cabal b/cipher-aes128.cabal
--- a/cipher-aes128.cabal
+++ b/cipher-aes128.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                cipher-aes128
-version:             0.7.0.3
+version:             0.7.0.6
 synopsis:            AES and common modes using AES-NI when available.
 description:         Cipher-aes128 is an implementation of AES and common modes of operation.  It borrows Hanquez's C AES code (see 'cipher-aes') but
                      is unique due to including compile-time detection of
@@ -18,10 +18,8 @@
 homepage:            https://github.com/TomMD/cipher-aes128
 bug-reports:         https://github.com/TomMD/cipher-aes128/issues
 build-type:          Custom
--- build-type:          Simple
--- ^^^ For HaLVM
 cabal-version:       >=1.10
-tested-with:         GHC==7.10.3
+tested-with:         GHC==7.4.2, GHC==7.6.3, GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.4, GHC==8.6.2, GHC==8.10.4, GHC==9.0.1
 
 extra-source-files:       ./cbits/*.h, ./cbits/*.c
                         , AUTHORS
@@ -30,9 +28,8 @@
   description: Build a program to test the AES implementation
   default: False
 
-flag halvm
-    description: The HaLVM target
-    default: False
+custom-setup
+  setup-depends: base >= 4.2 && <5, Cabal >= 1.10 && < 3.7, process >=1.0
 
 library
   default-language:    Haskell2010
@@ -51,9 +48,6 @@
                      , ./cbits/gf.c
   include-dirs:        cbits/
   cc-options:
-  if flag(halvm)
-    cc-options: -maes -mpclmul -mssse3 -DWITH_AESNI
-    cpp-options: -DWITH_AESNI -maes -mpclmul -mssse3
   -- None by default cc-options:          -mssse3 -maes -mpclmul
 
 source-repository head
@@ -64,6 +58,7 @@
   type:         exitcode-stdio-1.0
   hs-source-dirs:       . Benchmark
   main-is:              bench.hs
+  other-modules: Crypto.Cipher.AES128, Crypto.Cipher.AES128.Internal
   build-depends:        base < 5, criterion, crypto-api, entropy, bytestring, tagged, cereal
   ghc-options:          -O2
   include-dirs:        cbits
@@ -73,9 +68,9 @@
                      , ./cbits/aes_x86ni.c
                      , ./cbits/cpu.c
                      , ./cbits/gf.c
-  cc-options:          -mssse3 -maes -mpclmul
 
 Executable aes128_test
+  default-language:    Haskell2010
   if !flag(test)
     buildable: False
   main-is: Test/test.hs
